像網(wǎng)站分類一樣的表格圖怎么做怎么開網(wǎng)店新手入門
歡迎大家訂閱【Python從入門到精通】專欄,一起探索Python的無限可能!
文章目錄
- 前言
- 一、Pyecharts介紹
- 二、安裝Pyecharts
- 三、全局配置項(xiàng)
- 四、繪制折線圖
前言
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)可視化成為了分析和展示數(shù)據(jù)的重要手段。Pyecharts 是一個(gè)基于 Python 的強(qiáng)大數(shù)據(jù)可視化庫,能夠快速生成易于分享和交互的可視化圖表。本章詳細(xì)講解了 Pyecharts 的官網(wǎng)資源、安裝流程、全局配置項(xiàng)以及如何創(chuàng)建折線圖。
本篇文章參考:黑馬程序員
一、Pyecharts介紹
Pyecharts 是一個(gè)基于 Echarts 實(shí)現(xiàn)的 Python 可視化庫,可以輕松創(chuàng)建交互式的圖表。
①pyecharts官網(wǎng)
pyecharts官網(wǎng)提供了詳細(xì)的文檔和使用手冊,介紹了 Pyecharts 的各種功能、API 和用法。
②pyecharts畫廊官網(wǎng)
Pyecharts 畫廊官網(wǎng)展示了大量實(shí)際圖表的示例,包括各種復(fù)雜和多樣化的圖表。畫廊中的圖表通常是交互式的,可以在網(wǎng)頁上直接與圖表進(jìn)行互動,例如縮放、篩選或者查看詳細(xì)數(shù)據(jù)。
二、安裝Pyecharts
Win+R 打開運(yùn)行對話框,在對話框中輸入cmd并回車進(jìn)入命令提示符。
輸入pip install pyecharts
即可通過網(wǎng)絡(luò)快速安裝第三方包。
檢驗(yàn)pyecharts是否可以正常使用,輸入python并回車進(jìn)入python解釋器環(huán)境,接著輸入import pyecharts導(dǎo)入pyecharts包并回車,如果沒有報(bào)錯(cuò)即可正常使用。
三、全局配置項(xiàng)
Pyecharts 提供了多種全局配置選項(xiàng),可以幫助我們調(diào)整圖表的整體外觀和行為。這些全局配置項(xiàng)可以在創(chuàng)建圖表時(shí)進(jìn)行設(shè)置,以改變圖表的樣式、顏色、標(biāo)題等屬性。
常見的全局配置項(xiàng):
類別 | 配置項(xiàng) | 說明 |
---|---|---|
圖表標(biāo)題 | title | 主標(biāo)題 |
圖表標(biāo)題 | subtitle | 副標(biāo)題 |
圖表標(biāo)題 | subtext | 副標(biāo)題詳細(xì)信息 |
圖表標(biāo)題 | link | 點(diǎn)擊標(biāo)題跳轉(zhuǎn)的鏈接 |
圖表標(biāo)題 | target | 標(biāo)題鏈接的目標(biāo) |
圖表標(biāo)題 | textstyle_opts | 字體樣式(如顏色、大小等) |
提示框 | is_show | 是否顯示提示框 |
提示框 | trigger | 提示框觸發(fā)方式(如 'item' ) |
提示框 | formatter | 自定義格式化函數(shù) |
圖例 | orient | 圖例的朝向('horizontal' 或 'vertical' ) |
圖例 | pos_left | 圖例的左邊距 |
圖例 | pos_top | 圖例的上邊距 |
圖例 | data | 顯示的圖例名稱列表 |
坐標(biāo)軸 | name | 坐標(biāo)軸名稱 |
坐標(biāo)軸 | type | 坐標(biāo)軸類型(如 'value' 、'category' ) |
坐標(biāo)軸 | axislabel_opts | 坐標(biāo)軸標(biāo)簽樣式 |
坐標(biāo)軸 | split_line | 是否顯示坐標(biāo)軸分隔線 |
數(shù)據(jù)縮放 | type | 數(shù)據(jù)縮放的類型(如 'inside' 或 'slider' ) |
數(shù)據(jù)縮放 | xaxis_index | 控制哪個(gè) X 軸的數(shù)據(jù)縮放 |
數(shù)據(jù)縮放 | yaxis_index | 控制哪個(gè) Y 軸的數(shù)據(jù)縮放 |
背景 | backgroundColor | 圖表的背景顏色 |
背景 | visualMap | 視覺映射配置 |
網(wǎng)格 | left | 網(wǎng)格的左邊距 |
網(wǎng)格 | right | 網(wǎng)格的右邊距 |
網(wǎng)格 | top | 網(wǎng)格的上邊距 |
網(wǎng)格 | bottom | 網(wǎng)格的下邊距 |
網(wǎng)格 | containLabel | 是否包含坐標(biāo)軸的標(biāo)簽 |
其他選項(xiàng) | animation | 動畫關(guān)于圖表的顯示(開啟/關(guān)閉) |
其他選項(xiàng) | tooltip | 提示框的整體設(shè)置 |
其他選項(xiàng) | series | 針對特定系列的設(shè)置 |
四、繪制折線圖
①基本流程
- 導(dǎo)入必要的模塊
- 創(chuàng)建折線圖對象
- 添加 X 軸數(shù)據(jù)
- 添加 Y 軸數(shù)據(jù)
- 設(shè)置全局選項(xiàng)
- 渲染或生成圖像
②常見方法
方法 | 作用 | 示例 |
---|---|---|
Line() | 創(chuàng)建折線圖對象 | from pyecharts.charts import Line; line = Line() |
add() | 添加數(shù)據(jù)系列 | line.add_xaxis(x_data).add_yaxis("系列名稱", y_data) |
set_global_opts() | 設(shè)置全局配置,如標(biāo)題、工具提示等 | line.set_global_opts(title_opts=opts.TitleOpts(title="圖表標(biāo)題")) |
set_series_opts() | 設(shè)置系列特定配置,如標(biāo)簽、樣式等 | line.set_series_opts(label_opts=opts.LabelOpts(is_show=True)) |
render() | 渲染圖表并保存為 HTML 文件 | line.render("line_chart.html") |
set_colors() | 自定義折線顏色 | line.set_colors(['#d48265', '#91c7ae']) |
set_tooltip() | 自定義 tooltip 的顯示方式 | line.set_global_opts(tooltip_opts=opts.TooltipOpts(formatter=": {c}")) |
set_xaxis() | 自定義 x 軸的名稱或類型 | line.set_xaxis("自定義 X 軸名稱") |
set_yaxis() | 自定義 y 軸的名稱或類型 | line.set_yaxis("自定義 Y 軸名稱") |
legend() | 設(shè)置圖例 | line.set_series_opts(legend_opts=opts.LegendOpts(is_show=True)) |
datazoom() | 添加數(shù)據(jù)縮放控件 | line.set_global_opts(datazoom_opts=[opts.DataZoomOpts()]) |
# 導(dǎo)包,導(dǎo)入Line功能構(gòu)建折線圖對象
from pyecharts.charts import Line
# 創(chuàng)建一個(gè)折線圖對象
line=Line()
# 給折線圖對象添加x軸的數(shù)據(jù)
line.add_xaxis(["中國","美國","英國"])
# 給折線圖對象添加y軸的數(shù)據(jù)
line.add_yaxis("CDP",[30,20,10])
# 通過render方法將代碼生成圖像
line.render()
運(yùn)行后line.render()
方法會創(chuàng)建并保存一個(gè)包含該折線圖的HTML
文件。通常情況下,這個(gè)文件會被保存在當(dāng)前工作目錄下,文件名默認(rèn)是 render.html。
打開render.html
文件,點(diǎn)擊右上角的瀏覽器圖標(biāo),可以在瀏覽器中查看創(chuàng)建的折線圖。
進(jìn)行全局配置后:
# 導(dǎo)包
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
from pyecharts.options import LegendOpts
from pyecharts.options import ToolboxOpts
from pyecharts.options import VisualMapOpts
# 創(chuàng)建一個(gè)折線圖對象
line=Line()
# 給折線圖對象添加x軸的數(shù)據(jù)
line.add_xaxis(["中國","美國","英國"])
# 給折線圖對象添加y軸的數(shù)據(jù)
line.add_yaxis("CDP",[30,20,10])
# 通過set_global_pots設(shè)置全局配置項(xiàng)
line.set_global_opts(# 用于配置圖表的標(biāo)題 title_opts=TitleOpts(title="GDP展示",# 將標(biāo)題位置設(shè)置為居中顯示,距底部設(shè)置為占圖表可用高度的1%pos_left="center",pos_bottom="1%"),# 設(shè)置圖例的可見性 legend_opts=LegendOpts(is_show=True),# 用于配置工具箱的選項(xiàng) toolbox_opts=ToolboxOpts(),# 設(shè)置視覺映射的可見性 visualmap_opts=VisualMapOpts(is_show=True),
) # 通過render方法將代碼生成圖像
line.render()
【例題】
根據(jù)如下三個(gè)文本文件畫出2020年ABC三國某疾病確診人數(shù)對比折線圖。
A國.txt文本文件內(nèi)容:
jsonp_1629344292311_69436({“status”:0,“msg”:“success”,“data”:[{“name”:“A國”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“l(fā)ist”:[{“name”:“確診”,“data”:[34,34,34,53,57]},{“name”:“治愈”,“data”:[0,0,3,0,0]},{“name”:“死亡”,“data”:[0,0,0,0,0]},{“name”:“新增確診”,“data”:[23,0,0,19,4]}]}}]});
B國.txt文本文件內(nèi)容:
jsonp_1629350871167_29498({“status”:0,“msg”:“success”,“data”:[{“name”:“B國”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“l(fā)ist”:[{“name”:“確診”,“data”:[93,105,132,144,156]},{“name”:“治愈”,“data”:[23,24,24,26,27]},{“name”:“死亡”,“data”:[1,1,1,1,1]},{“name”:“新增確診”,“data”:[9,12,27,12,12]}]}}]});
C國.txt文本文件內(nèi)容:
jsonp_1629350745930_63180({“status”:0,“msg”:“success”,“data”:[{“name”:“C國”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“l(fā)ist”:[{“name”:“確診”,“data”:[54,59,67,76,84]},{“name”:“治愈”,“data”:[468,506,620,774,969]},{“name”:“死亡”,“data”:[164,178,226,249,288]},{“name”:“新增確診”,“data”:[533,565,809,875,846]}]}}]});
要求折線圖實(shí)現(xiàn)下圖效果:
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts# 處理數(shù)據(jù)
f_a = open("D:/A國.txt", "r", encoding="UTF-8")
a_data = f_a.read() # A國的全部內(nèi)容f_b = open("D:/B國.txt", "r", encoding="UTF-8")
b_data = f_b.read() # B國的全部內(nèi)容f_c = open("D:/C國.txt", "r", encoding="UTF-8")
c_data = f_c.read() # C國的全部內(nèi)容# 去掉不合JSON規(guī)范的開頭
a_data = a_data.replace("jsonp_1629344292311_69436(", "")
b_data = b_data.replace("jsonp_1629350871167_29498(", "")
c_data = c_data.replace("jsonp_1629350745930_63180(", "")# 去掉不合JSON規(guī)范的結(jié)尾
a_data = a_data[:-2]
b_data = b_data[:-2]
c_data = c_data[:-2]# JSON轉(zhuǎn)Python字典
us_dict = json.loads(a_data)
jp_dict = json.loads(b_data)
in_dict = json.loads(c_data)# 獲取trend key
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']# 獲取日期數(shù)據(jù),用于x軸
us_x_data = us_trend_data['updateDate']
jp_x_data = jp_trend_data['updateDate']
in_x_data = in_trend_data['updateDate']# 獲取確認(rèn)數(shù)據(jù),用于y軸
us_y_data = us_trend_data['list'][0]['data']
jp_y_data = jp_trend_data['list'][0]['data']
in_y_data = in_trend_data['list'][0]['data']# 生成圖表
line = Line() # 構(gòu)建折線圖對象
# 添加x軸數(shù)據(jù)
line.add_xaxis(us_x_data) # x軸是公用的,所以使用一個(gè)國家的數(shù)據(jù)即可
# 添加y軸數(shù)據(jù)
line.add_yaxis("A國確診人數(shù)", us_y_data, label_opts=LabelOpts(is_show=False)) # 添加A國的y軸數(shù)據(jù)
line.add_yaxis("B國確診人數(shù)", jp_y_data, label_opts=LabelOpts(is_show=False)) # 添加B國本的y軸數(shù)據(jù)
line.add_yaxis("C國確診人數(shù)", in_y_data, label_opts=LabelOpts(is_show=False)) # 添加C國的y軸數(shù)據(jù)# 設(shè)置全局選項(xiàng)
line.set_global_opts(# 標(biāo)題設(shè)置title_opts=TitleOpts(title="2020年ABC三國某疾病確診人數(shù)對比折線圖", pos_left="center", pos_bottom="1%")
)# 調(diào)用render方法,生成圖表
line.render("render2.html")
# 關(guān)閉文件對象
f_a.close()
f_b.close()
f_c.close()
運(yùn)行后打開render2.html
文件并在瀏覽器中查看創(chuàng)建的折線圖: