pyecharts在數據可視化中的應用詳解

使用pyecharts進行數據可視化html

安裝 pip install pyecharts也能夠在pycharm軟件裏進行下載pyecharts庫包。 下載成功後進行查詢版本號瀏覽器

import pyecharts
print(pyecharts.__version__)

pyecharts的中文官網app

能夠查看pyecharts的中文官網介紹http://pyecharts.org/#/zh-cn/introecharts

通常的使用方法編輯器

add() 該方法主要用於添加圖表的數據和設置各類配置項。ide

show_config() 用於打印輸出圖表的全部配置項post

render() 該方法默認將會在根目錄下生成一個 render.html 的文件,支持 path 參數,設置文件保存位置,如 render(r"e:my_first_chart.html"),文件用瀏覽器打開。網站

注意* 默認的編碼類型爲 UTF-8,在 Python3 中是沒什麼問題的,Python3 對中文的支持好不少。可是在 Python2 中,編碼的處理是個很頭疼的問題,暫時沒能找到完美的解決方法,目前只能經過文本編輯器本身進行二次編碼,我用的是 Visual Studio Code,先經過 Gbk 編碼從新打開,而後再用 UTF-8 從新保存,這樣用瀏覽器打開的話就不會出現中文亂碼問題了。編碼

基本使用spa

  • chart_name = Type() 初始化具體類型圖表。

  • add() 添加數據及配置項。

  • render() 生成 .html 文件。

用示例來解決實際問題

1.美國1995年-2009年郵費變化折線圖、階梯圖;

數據以下: 年份 : [「1995」, 「1996」, 「1997」, 「1998」, 「1999」, 「2000」, 「2001」, 「2002」, 「2003」, 「2004」, 「2005」, 「2006」, 「2007」, 「2008」, 「2009」] 郵費: [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44] 折線圖 代碼以下:

import pyecharts.options as opts
from pyecharts.charts import Line
 
year= ["1995", "1996", "1997", "1998", "1999", "2000",
 "2001", "2002", "2003", "2004", "2005", "2006",
 "2007", "2008", "2009"]
postage= [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]
 
(
 Line()
 .set_global_opts(
 tooltip_opts=opts.TooltipOpts(is_show=False),
 xaxis_opts=opts.AxisOpts(type_="category"),
 yaxis_opts=opts.AxisOpts(
 type_="value",
 axistick_opts=opts.AxisTickOpts(is_show=True),
 splitline_opts=opts.SplitLineOpts(is_show=True),
 ),
 )
 .add_xaxis(xaxis_data=year)
 .add_yaxis(
 series_name="",
 y_axis=postage,
 symbol="emptyCircle",
 is_symbol_show=True,
 label_opts=opts.LabelOpts(is_show=False),
 )
 .render("basic_line_chart.html")
)

會在同目錄下生成一個basic_line_chart.html的網頁,打開網頁則會顯示該代碼的運行結果。(此不展現,與下同)

階梯圖 代碼以下:

import pyecharts.options as opts
from pyecharts.charts import Line
 
year = ["1995", "1996", "1997", "1998", "1999", "2000",
 "2001", "2002", "2003", "2004", "2005", "2006",
 "2007", "2008", "2009"]
postage = [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]
 
c = (
 Line()
 .add_xaxis(xaxis_data=year)
 .add_yaxis("美國1995年-2009年郵費", y_axis=postage, is_step=True)
 .set_global_opts(title_opts=opts.TitleOpts(title="Line-階梯圖"))
 .render("line_step.html")
)

會在同目錄下生成一個line_step.html的網頁,打開網頁則會顯示該代碼的運行結果:


v2-6f9f01750f2e52256a411dd58c632d67_720w.png


2.2000年-2010年熱狗大胃王比賽前三名成績的堆疊柱形圖、極座標系-堆疊柱狀圖(南丁格爾玫瑰圖); 數據文件:hot-dog-places.csv hot-dog-places.csv內寫着:

2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 25,50,50.5,44.5,53.5,49,54,66,59,68,54 24,31,26,30.5,38,37,52,63,59,64.5,43 22,23.5,25.5,29.5,32,32,37,49,42,55,37

等數據將其保存爲csv文件 堆疊柱形圖 代碼以下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv
 
filename="hot-dog-places.csv"
data_x=[]
#打開文件循環讀取數據
with open(filename) as f:
 reader = csv.reader(f)
 for data_row in reader:
 data_x.append(data_row)
x=data_x[0]         #讀取數據列表集中第一行數據進行賦值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]
 
c = (
 Bar()
 .add_xaxis(x)
 .add_yaxis("第一名", y1, stack="stack1")
 .add_yaxis("第二名", y2, stack="stack1")
 .add_yaxis("第三名", y3, stack="stack1")#顯示在同一條柱狀圖中,不帶stack屬性則會分爲三條柱狀圖
 .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆疊柱形圖"))
 .render("bar_stack0.html")
)

會在同目錄下生成一個bar_stack0.html的網頁,打開網頁則會顯示該代碼的運行結果:


v2-b6ce0496c1abf8b1fd05725108f389c8_720w.png


極座標系-堆疊柱狀圖(南丁格爾玫瑰圖) 代碼以下:

from pyecharts import options as opts
from pyecharts.charts import Polar
import csv
 
filename="hot-dog-places.csv"
data_x=[]
#打開文件循環讀取數據
with open(filename) as f:
 reader = csv.reader(f)
 for data_row in reader:
 data_x.append(data_row)
x=data_x[0]         #讀取數據列表集中第一行數據進行賦值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]
 
c = (
 Polar()
 .add_schema(angleaxis_opts=opts.AngleAxisOpts(data=x, type_="category"))
 .add("A", y1, type_="bar", stack="stack0")
 .add("B", y2, type_="bar", stack="stack0")
 .add("C", y3, type_="bar", stack="stack0")
 .set_global_opts(title_opts=opts.TitleOpts(title="極座標系-堆疊柱狀圖(南丁格爾玫瑰圖)"))
 .render("極座標系-堆疊柱狀圖(南丁格爾玫瑰圖).html")
)

打開網頁則會顯示該代碼的運行結果:


v2-80e360ec2894dea9c2d09c5758ab9c56_720w.png


極座標系-堆疊柱狀圖 代碼與上面相同,須要改的是c後面接的將其更改成以下代碼:

d = (
 Polar()
 .add_schema(
 radiusaxis_opts=opts.RadiusAxisOpts(data=x, type_="category"),
 angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, max_=200),
 )
 .add("A", y1, type_="bar", stack="stack1")
 .add("B", y2, type_="bar", stack="stack1")
 .add("C", y3, type_="bar", stack="stack1")
 .set_global_opts(title_opts=opts.TitleOpts(title="極座標系-堆疊柱狀圖"))
 .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
 .render("極座標系-堆疊柱狀圖.html")
)

打開網頁則會顯示該代碼的運行結果:


v2-f215943c3accd8b516e038990c914a03_720w.png


3.某網站用戶感興趣的領域的投票結果繪製餅圖、環形圖; 數據文件:vote_result.csv vote_result.csv內寫着:

感興趣的領域,票數 金融,172 醫療保健,136 市場業,135 零售業,101 製造業,80 司法,68 工程與科學,50 保險業,29 其餘,41

餅圖 代碼以下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv
 
filename="vote_result.csv"
data_x=[]
#打開文件循環讀取數據
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
 data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
 if(index>0):
 b.append(values[0])
 c.append(values[1])
 
x=data_x[0]         #讀取數據列表集中第一行數據進行賦值
 
d = (
 Pie()
 .add(
 "",
 [list(z) for z in zip(b, c)],
 center=["35%", "50%"],
 )
 .set_global_opts(
 title_opts=opts.TitleOpts(title="投票結果餅圖"),
 legend_opts=opts.LegendOpts(pos_left="15%"),
 )
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
 .render("pie_position.html")
)

打開網頁則會顯示該代碼的運行結果:


v2-1a1b39aff3f566cdabc2302e199aee05_720w.png


環形圖 代碼以下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv
 
filename="vote_result.csv"
data_x=[]
#打開文件循環讀取數據
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
 data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
 if(index>0):
 b.append(values[0])
 c.append(values[1])
 
d = (
 Pie()
 .add(
 "",
 [list(z) for z in zip(b, c)],
 radius=["40%", "75%"],
 )
 .set_global_opts(
 title_opts=opts.TitleOpts(title="環形圖"),
 legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
 )
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
 .render("投票結果+環形圖.html")
)

打開網頁則會顯示該代碼的運行結果:


v2-b4d012e610f5f8ddbdc9af08d4744697_720w.png


4.奧巴馬的政治舉措民意調查結果的堆疊柱形圖; 數據文件:approval_rate.csv approval_rate.csv內寫着:

政治舉措,支持,反對,不發表意見 種族問題,52,38,10 教育,49,40,11 恐怖活動,48,45,7 能源政策,47,42,11 外交事務,44,48,8 環境,43,51,6 宗教政策,41,53,6 稅收,41,54,5 醫療保健政策,40,57,3 經濟,38,59,3 就業政策,36,57,7 貿易政策,31,64,5 外來移民,29,62,9

堆疊柱形圖 代碼以下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv
 
filename="approval_rate.csv"
data_x=[]
#打開文件循環讀取數據
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
 data_x.append(data_row)
x=[]            #讀取數據列表集中第一行數據進行賦值
b=[]
c=[]
d=[]
e=[]
for index,values in enumerate(data_x):
 if(index>0):
 b.append(values[0])
 c.append(values[1])
 d.append(values[2])
 e.append(values[3])
 elif(index==0):
 x.append(values)
  
print(b)
c = (
 Bar()
 .add_xaxis(b)
 .add_yaxis(x[0][1], c, stack="stack1")
 .add_yaxis(x[0][2], d, stack="stack1")
 .add_yaxis(x[0][3], e, stack="stack1")#顯示在同一條柱狀圖中,不帶stack屬性則會分爲三條柱狀圖
 .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆疊柱形圖"))
 .render("政治舉措民意調查結果.html")
)

打開網頁則會顯示該代碼的運行結果:


v2-090c30fc82911e2267a2138fc4c7d19e_720w.png


到此這篇關於pyecharts在數據可視化中的應用詳解的文章就介紹到這了,更多相關pyecharts 數據可視化內容請搜索之前的文章或繼續瀏覽下面的相關文章但願你們之後多多支持!

相關文章
相關標籤/搜索