天天看點

【Python】Pyecharts 動态可視化 (餅圖 Pie)前言一、安裝二、示例

前言

Pyecharts 是一個用于生成 Echarts 圖表的類庫,由 Python 實作接口,其追根溯源可到百度曾開源的一個資料可視化 JS 庫 Echarts。與我們平常用的 Matplotlib 不同,Echarts 圖表不僅美觀靓麗,而且是動态可互動的,API 調用也很友善,幾行代碼就能實作圖形渲染 ... 如此美麗的繪圖工具自是令人喜愛。然而,Pyecharts 也有缺點,比如官方文檔目錄置于左側欄,未全漢化且标題無法折疊,查找不便;許多 API 無參數說明,僅給出執行個體,甚至無注釋 ...... 當然,事物的發展是前進性和曲折性的統一,有壓力才有動力,畢竟是開源的。

即便如此,Pyecharts 的效果依舊令人感到驚豔,值得去了解和嘗試,本文将簡要展示其中的一種 —— 餅圖 (Pie)。

一、安裝

pip 安裝,在指令行輸入:

pip install pyecharts
           

若太慢,就清華源安裝:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
           

二、示例

2.1 資料準備

首先自定義一些資料用于展示:

## 導包 —— 餅狀圖 Pie
import pyecharts.options as opts
from pyecharts.charts import Pie

## 自定義示例資料
# 月份
month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
# 平均溫度
temp = [1.8, 2.5, 3.8, 7.5, 9.6, 15.4, 25.0, 29.4, 28.3, 11.3, 5.4, 1.9]
# 平均降水量
rain = [0.1, 4.6, 5.8, 14.2, 16.3, 25.3, 34.5, 45.2, 41.0, 16.3, 9.9, 4.1]

# 資料打包
data_pair_temp = [list(data) for data in zip(month, temp)]  # month 相當于自變量, temp 相當于因變量
data_pari_rain = [list(data) for data in zip(month, rain)]  # month 相當于自變量, rain 相當于因變量

# 資料整理(沒必要)
#data_pair.sort(key=lambda x: x[1])
           

注意資料需要打包成嵌套清單的形式,例如:

>>> data_pair_temp
[['Jan', 1.8],
 ['Feb', 2.5],
 ['Mar', 3.8],
 ['Apr', 7.5],
 ['May', 9.6],
 ['Jun', 15.4],
 ['Jul', 25.0],
 ['Aug', 29.4],
 ['Sep', 28.3],
 ['Oct', 11.3],
 ['Nov', 5.4],
 ['Dec', 1.9]]
           

2.2 基本圖形

 通過執行個體化 Pie 對象、調用 add() 添加基本參數、調用 set_global_opts () 設定全局參數、調用 set_series_opts () 設定系列參數、調用 render() 渲染圖像檔案這些基本步驟,就可以繪制出一個簡單的圖形。以下繪制了一個 basic 餅圖:

# basic
# 可以賦予對象,也可不必,因為渲染是通過  .render() 語句完成的
p = (
        Pie()  # 執行個體化
        .add(
            series_name="平均溫度",  # 系列名稱
            data_pair=data_pair_temp,# 饋入資料
            radius="35%",            # 餅圖半徑比例
            center=["50%", "50%"],   # 餅圖中心坐标
            label_opts=opts.LabelOpts(is_show=False, position="center"),  # 标簽位置
        )
        .set_global_opts(legend_opts=opts.LegendOpts(is_show=False))      # 不顯示圖示
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 标簽顔色
    .render("Pie_basic.html")  # 渲染檔案及其名稱
    #.render_notebook()
)
           

注意,儲存的是 html 檔案,将其放在浏覽器即可打開:

【Python】Pyecharts 動态可視化 (餅圖 Pie)前言一、安裝二、示例

2.3 擴充設定

事實上,可設定的選項很豐富,雖然不能一一示範,但可以簡要展示更多參數設定。以下繪制了一個 rosetype 的餅圖:

## rosetype
# 可以賦予對象,也可不必,因為渲染是通過  .render() 語句完成的
(
    # 執行個體化 Pie 對象
    Pie(init_opts=opts.InitOpts(width="800px", height="600px", bg_color="#2c343c"))  # 畫布尺寸 + 背景顔色
    .add(  ## 圖形設定
        series_name="平均降水",    # 系列名稱
        data_pair=data_pari_rain, # 饋入資料
        rosetype="radius",        # 餅圖類型
        radius="35%",             # 餅圖半徑比例
        center=["50%", "50%"],    # 餅圖中心坐标
        label_opts=opts.LabelOpts(is_show=False, position="center"),  # 标簽顯示與位置設定
    )
    .set_global_opts(  ## 全局設定
        title_opts=opts.TitleOpts(
            title="全年氣候模拟資料",    # 标題
            pos_left="center",         # 标題水準位置
            pos_top="50",              # 标題與畫布頂端距離
            title_textstyle_opts=opts.TextStyleOpts(color="#fff"),  # 标題顔色
        ),
        legend_opts=opts.LegendOpts(is_show=False),  # 不顯示圖示
    )
    .set_series_opts(  ## 系列設定
        label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.1)"),  # 标簽顔色 (RGB+透明度)
    )
    .render("Pie_rosetype.html")
)
           
【Python】Pyecharts 動态可視化 (餅圖 Pie)前言一、安裝二、示例

參考文獻:

官方文檔之餅圖 Pie:http://gallery.pyecharts.org/#/Pie/README

Github:https://github.com/pyecharts/pyecharts