首頁 > 軟體

詳解Python+Pyecharts實現漏斗圖的繪製

2022-06-20 18:00:36

任務描述

本關任務:利用 PyEcharts 繪製一個基本的漏斗圖。

相關知識

為了完成本關任務,你需要掌握:

1. Python 的基本語法

2. PyEcharts 漏斗圖的相關內容

匯入圖表型別

與日曆圖的操作類似,在檔案的開始我們首先要將所需包匯入,如右側編輯器中程式碼所示。

匯入漏斗圖的語句為

from pyecharts.charts import Funnel

為了方便構造資料,我們還匯入了 PyEcharts 提供的虛擬封包,如下所示:

from pyecharts.faker import Faker

構造資料

通過 PyEcharts 提供的虛擬封包 Faker,我們可以用如下語句構造一個二維 List:

data = [
list(z) for z in zip(Faker.choose(), Faker.values())
]

其中,Faker包中的 choose 方法會隨機選擇一組屬性,而 values 方法則生成隨機的資料值。

熟悉標題設定選項

在之前的關卡中我們已經熟悉了 PyEcharts 繪圖的流程,故本關主要介紹標題相關的設定選項:

class TitleOpts(
# 主標題文字,支援使用 n 換行。
title: Optional[str] = None,
# 主標題跳轉 URL 連結
title_link: Optional[str] = None,
# 主標題跳轉連結方式
# 預設值是: blank
# 可選引數: 'self', 'blank'
# 'self' 當前視窗開啟; 'blank' 新視窗開啟
title_target: Optional[str] = None,
# 副標題文字,支援使用 n 換行。
subtitle: Optional[str] = None,
# 副標題跳轉 URL 連結
subtitle_link: Optional[str] = None,
# 副標題跳轉連結方式
# 預設值是: blank
# 可選引數: 'self', 'blank'
# 'self' 當前視窗開啟; 'blank' 新視窗開啟
subtitle_target: Optional[str] = None,
# title 元件離容器左側的距離。
# left 的值可以是像 20 這樣的具體畫素值,可以是像 '20%' 這樣相對於容器高寬的百分比,
# 也可以是 'left', 'center', 'right'。
# 如果 left 的值為'left', 'center', 'right',元件會根據相應的位置自動對齊。
pos_left: Optional[str] = None,
# title 元件離容器右側的距離。
# right 的值可以是像 20 這樣的具體畫素值,可以是像 '20%' 這樣相對於容器高寬的百分比。
pos_right: Optional[str] = None,
# title 元件離容器上側的距離。
# top 的值可以是像 20 這樣的具體畫素值,可以是像 '20%' 這樣相對於容器高寬的百分比,
# 也可以是 'top', 'middle', 'bottom'。
# 如果 top 的值為'top', 'middle', 'bottom',元件會根據相應的位置自動對齊。
pos_top: Optional[str] = None,
# title 元件離容器下側的距離。
# bottom 的值可以是像 20 這樣的具體畫素值,可以是像 '20%' 這樣相對於容器高寬的百分比。
pos_bottom: Optional[str] = None,
# 標題內邊距,單位px,預設各方向內邊距為5,接受陣列分別設定上右下左邊距。
# // 設定內邊距為 5
# padding: 5
# // 設定上下的內邊距為 5,左右的內邊距為 10
# padding: [5, 10]
# // 分別設定四個方向的內邊距
# padding: [
# 5, // 上
# 10, // 右
# 5, // 下
# 10, // 左
# ]
padding: Union[Sequence, Numeric] = 5,
# 主副標題之間的間距。
item_gap: Numeric = 10,
# 主標題字型樣式設定項,參考 `series_options.TextStyleOpts`
title_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
# 副標題字型樣式設定項,參考 `series_options.TextStyleOpts`
subtitle_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
)

如上所示,標題主要分為主標題和副標題兩個模組,其設定方法相類似。比較常用的有設定文字、設定超連結、設定位置等選項。上述字型樣式設定與其他部分字型樣式設定相似,我們將在後續實訓中詳細介紹。

標題設定屬於全域性設定項,可通過 set_global_opts 方法設定。

程式設計要求

根據以上介紹,在右側編輯器補充程式碼,繪製給定資料的漏斗圖,要求:

  • 系列名稱設定為“商品”;
  • 將給定資料傳入漏斗圖;
  • 將漏斗圖示題設定為“Funnel-基本範例”;
  • 為漏斗圖新增副標題,命名為“Funnel-副標題”。

測試說明

平臺會執行你編寫的程式碼進行繪圖,並與預期圖片進行比對。預期效果如下:

提示:

設定系列名稱以及新增資料部分可以簡寫為:

...
.add("名稱", data)
...

開始你的任務吧,祝你成功!

程式碼

from PreTest import *
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_phantomjs import snapshot
 
from pyecharts.charts import Funnel
 
from pyecharts.faker import Faker
 
data = [
    list(z) for z in zip(Faker.choose(), Faker.values())
]
 
def funnel_chart() -> Funnel:
    # ********* Begin *********#  
    funnel = (
        Funnel()
        .add("商品", data)
        .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-基本範例",subtitle="Funnel-副標題"))
    )
    # ********** End **********#
    return funnel
 
make_snapshot(snapshot, funnel_chart().render("Result/render.html"), 'StudentAnswer/student_answer.png') # 輸出圖片
make_snapshot(snapshot, funnel_base(data).render(), "StandardAnswer/task1/standard_answer_1.png")

以上就是詳解Python+Pyecharts實現漏斗圖的繪製的詳細內容,更多關於Python Pyecharts漏斗圖的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com