Python可视化,pyecharts绘制玫瑰图展现新冠肺炎全球形势

    技术2022-07-11  82

    欢迎关注微信公众号:excelwork

    “ 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 pdfrom pyecharts.charts import Piefrom pyecharts import options as optsfrom 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):

    Processed: 0.011, SQL: 9