更多文章,可關注微信公衆號:Excel辦公小技巧
“ Python進行數據可視化第一篇,利用pyecharts繪製玫瑰圖,來展示截至目前新冠肺炎造成的全球確診病例分佈情況。”
01
—
pyecharts準備工作
1.1 實現玫瑰圖的方式
首先,得確定用什麼方式才能繪製出玫瑰圖,pycharts中,使用Pie繪製餅圖,默認參數繪製出來是我們熟悉的餅圖:
通過rosetype等於area或者radius得到玫瑰圖,其中:
-
area得到的各piece角度相同,半徑反應數據大小;
-
radius的角度反應數據的百分比,半徑反應數據大小。
比如我們看到人民網微博每天發的疫情圖就是繪製的玫瑰圖(個別國家扇形太長了,就不貼圖了)。
1.2 圖表關鍵配置
本次繪製將會用到下面的包、函數或參數配置:
-
is_closewise參數:設置扇形排列方向。add函數中使用,True時爲順時針,False時爲逆時針
-
theme參數:設置主題。導入ThemeType後,在add函數內使用;
-
set_global_opts函數:全局配置;
-
set_series_opts函數:標籤設置;
-
radius=數組,第一項是內半徑,第二項是外半徑。
-
具體配置:通過導入options實現。
02
—
繪製玫瑰圖
2.1 導入相關包
pandas讀取保存疫情數據的CSV文件、Pie繪製圖形、options導入配置、 ThemeType設置整體主題風格。
import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType
2.2 導入數據
數據來自akshare:
data = pd.read_csv('covid190623.csv',encoding='gbk')
2.3 參數配置
全局配置、標籤設置、主題風格選擇等。
pie = Pie(init_opts=opts.InitOpts(width='1920px', height='1080px',theme=ThemeType.INFOGRAPHIC))#或者自定義顏色
pie.add('', [(a,b) for a,b in zip(data['country'], data['confirm_quantity'])],
radius=["10%", "125%"],
center=["50%", "66%"],
rosetype="area",
is_clockwise = False)
pie.set_global_opts(title_opts=opts.TitleOpts(title='新冠肺炎全球疫情形勢',
subtitle='截至6月23日TOP20',
title_textstyle_opts=opts.TextStyleOpts(font_size=35, color='#0c2a46', font_family="Microsoft YaHei", font_weight="bold"),
subtitle_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#0c2a46', font_family="Microsoft YaHei", font_weight="bold"),
pos_left='left', pos_top='top'),
legend_opts=opts.LegendOpts(is_show=True,pos_bottom='15%'),
toolbox_opts=opts.ToolboxOpts(pos_top='75%'))
pie.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=10,
formatter="{b}\n{c}", font_style="normal",
font_family="Microsoft YaHei"))
pie.render('新冠肺炎全球疫情形勢.html'
繪製結果如下(area):
(radius):