前言:
关于全球疫情的可视化展示,之前尝试过使用Sankey图进行展示(https://www.jianshu.com/p/d1ad468d79c8),也尝试过使用地图进行绘制(https://www.jianshu.com/p/1a2dbc0614ce),这篇换成用南丁格尔玫瑰图做展示,这也是很多媒体常用的图形类型。
一、什么是南丁格尔玫瑰图
南丁格尔玫瑰图是弗罗伦斯·南丁格尔所发明的。又名为极区图。是一种圆形的直方图。 南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),并且用以表达军医院季节性的死亡率。
弗罗伦斯·南丁格尔(英语:Florence Nightingale,1820年5月12日-1910年8月13日),英国护士和统计学家,出生于意大利的一个英国上流社会的家庭。在德国学习护理后,曾往伦敦的医院工作。于1853年成为伦敦慈善医院的护士长。
出于对资料统计的结果会不受人重视的忧虑,她发展出一种色彩缤纷的图表形式,让数据能够更加让人印象深刻。 这种图表形式有时也被称作「南丁格尔的玫瑰」,是一种圆形的直方图。 南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),并且用以表达军医院季节性的死亡率,对象是那些不太能理解传统统计报表的公务人员。 她的方法打动了当时的高层,包括军方人士和维多利亚女王本人,于是医事改良的提案才得到支持。
二、如何用Python制作南丁格尔玫瑰图
制作南丁格尔玫瑰图有很多方法,比如用excel、R、Tableau都可以制作,这里介绍如何用Python制作。
使用的数据是某日新冠疫情的全球确诊数量,数据原始格式如下:
绘制效果:
制作步骤:
2.1、安装Python、Pycharm,安装Python包:pyecharts
具体方法可参考:https://www.jianshu.com/p/621fd21218db
2.2、导入包、读入准备好的数据:
import pandasas pd
from pyecharts.chartsimport Pie
from pyechartsimport optionsas opts
# 创建数据框
df1 = pd.read_csv('E:\hill2020\Python相关\疫情地图.csv')
# 降序排序
df1.sort_values(by='num', ascending=False, inplace=True)
# 只取前20个
df=df1[:20]
2.3、数据格式转换&画图:
# 提取数据
v = df['continent'].values.tolist()
d = df['num'].values.tolist()
#设置颜色:
'''color_series = ['#FAE927','#E9E416','#C9DA36','#9ECB3C','#6DBC49',
'#37B44E','#3DBA78','#14ADCF','#209AC9','#1E91CA',
'#2C6BA0','#2B55A1','#2D3D8E','#44388E','#6A368B'
'#7D3990','#A63F98','#C31C88','#D52178','#D5225B',
'#D02C2A','#D44C2D','#F57A34','#FA8F2F','#D99D21',
'#CF7B25','#CF7B25','#CF7B25']
'''
# 实例化Pie类
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='950px'))
# 设置颜色
#pie1.set_colors(color_series)
# 添加数据,设置饼图的半径,是否展示成南丁格尔图
pie1.add("", [list(z)for zin zip(v, d)],
radius=["10%", "135%"], #内半径,外半径
center=["30%", "75%"], #中心点的坐标位置
rosetype="area",
is_clockwise=False # 逆时针 or 顺时针
)
# 设置全局配置项
pie1.set_global_opts(title_opts=opts.TitleOpts(title='全球累计确诊top20'),
legend_opts=opts.LegendOpts(is_show=False),
toolbox_opts=opts.ToolboxOpts())
# 设置系列配置项
pie1.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12,
formatter="{b}:{c}例", font_style="italic",
font_weight="bold", font_family="Microsoft YaHei"
),
)
# 生成html文档
pie1.render('南丁格尔玫瑰图.html')
执行完后,我们可以看到PyCharm默认的文件夹中生成了一个名为“南丁格尔玫瑰图”的html文件,打开这个html文件,即可获得本章开头的玫瑰图了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更多数据相关文章,欢迎关注公众号“大数据会”,一起学习交流,留言可以获取相关数据哦!
网友评论