1.南丁格尔图
1.1 又叫:南丁格尔玫瑰图、鸡冠花图或极坐标区域图。
1.2 比如:
最近全国的抗击新冠病毒时,央视新闻和人民日报的这几张数据可视化图,很直观、很贴切。
反映了当前医护人员逆行且在抗击疫情的第一线。
图1和2
2.为什么选择南丁格尔图呢?
2.1 一个是数据可视化效果明显。
2.2 更重要的是纪念南丁格尔。
2.3 更是符合目前医护人员冲锋在抗击疫情的第一线,向医护人员致敬。
3.南丁格尔介绍
(1820年5月12日-1910年8月13日),
是一位英国护士和统计学家。
于1853年成为伦敦慈善医院的护士长。
是现代西医学上的第一位护士。
4.如何制作南丁格尔图呢?
4.1 网上有介绍商用在线制图软件等,此处略。
4.2 今天我自己探讨尝试其他方法,看看行不行,顺带复习python的相关知识。
=================================
★注意:以下数据不一定真实,仅供学习★
=================================
5.pyecharts法
5.1 代码:
#pyecharts版本v1.0
#xuguojun
#python3.8
#-*- coding: utf-8 -*-
#导出模块
from pyecharts import options as opts
from pyecharts.charts import Pie
#定义数据
name=['辽宁1天','湖南2天','天津3天','河北3天','四川3天','江西3天','安徽3天','上海4天','福建4天','河南4天','山西6天','广西6天','重庆6天','吉林7天','黑龙江8天','云南10天','陕西11天','海南11天','内蒙古12天','江苏12天','甘肃13天','新疆(含兵团)13天','贵州14天','青海25天','西藏32天']
data=[1,2,3,3,3,3,3,4,4,4,6,6,6,7,8,10,11,11,12,12,13,13,14,25,32]
color=['orange','orange','darkorange','darkorange','darkorange','#f47920','#f58220','#d64f44','#d93a49','#a7324a','#8552a1','#694d9f','#694d9f','#2b4490','#2a5caa','#224b8f','#426ab3','#4e72b8','#008792','#65c294','#45b97c','#78a355','#7fb80e','#bed742','#ffc20e']
#注意格式和注释说明
c = (
#其实就是一个带空心圆的pie饼图
Pie()
.add(
"", #这个空格的双引号不能少
#注意字典打包法
[list(z) for z in zip(name, data)],
# radius第一个外半径,第2个参数内半径
radius=["20%", "80%"],
#图形和legend的位置,居中
#center = [x,y],x为横坐标,y为纵坐标
center=["50%", "50%"],
is_clockwise=False, #顺时针true,逆时针false
#rosetype="radius", #radius:扇区圆心角展现数据的百分比
rosetype="area", #area:所有扇区圆心角相同,半径展现数据大小
#这个是false就是不显示带导线的外标签
#在add内的是局部设定,如果是全局设定那就是.set如下
label_opts=opts.LabelOpts(is_show=False),
)
# set_colors设置颜色,可以用列表形式
.set_colors(color) #不设置就是默认,这是单独设置的
.set_global_opts(title_opts=opts.TitleOpts(title="南丁格尔玫瑰图pyecharts法"),
# orient="vertical"设置图例垂直
legend_opts=opts.LegendOpts(orient="vertical",pos_top="15%",pos_right="2%")
)
)
#显示图,名字和格式,默认根目录下,双击打开即可
c.render('xgbd.html')
5.2 图
6.matplotlib-radar法
6.1 代码:
#xuguojun
#python3.8
#-*- coding: utf-8 -*-
#导出模块
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
# 导出通用字体设置
from matplotlib import font_manager
#facecolor=color='b',linestyle='--' or '-'
#r=-1000,为内圆的半径,向内画圆形
cir = Circle(xy = (0.0, 0.0), radius=1000,color='w')
# 本机设置:华文仿宋=hwfs,引出字体模块和位置
my_font = font_manager.FontProperties(fname="hwfs.ttf",size=20)
#定义对应颜色
color=['orange','orange','darkorange','darkorange','darkorange','#f47920','#f58220','#d64f44','#d93a49','#a7324a','#8552a1','#694d9f','#694d9f','#2b4490','#2a5caa','#224b8f','#426ab3','#4e72b8','#008792','#65c294','#45b97c','#78a355','#7fb80e','#bed742','#ffc20e']
labels =['辽宁1天','湖南2天','天津3天','河北3天','四川3天','江西3天','安徽3天','上海4天','福建4天','河南4天','山西6天','广西6天','重庆6天','吉林7天','黑龙江8天','云南10天','陕西11天','海南11天','内蒙古12天','江苏12天','甘肃13天','新疆(含兵团)13天','贵州14天','青海25天','西藏32天'] # 标签
#建立一个画布
fig=plt.figure() #默认figsize=(8,3),就是800×300
#建立一个坐标系,projection='polar'表示极坐标
ax = fig.add_subplot(111,projection='polar')
ax.add_patch(cir)
#代表从起点np.pi位置,开始加10个,因为width是np.pi/5,所以逐个加角度
#注意0.5pi就是垂直90°开始,但是有一个宽度问题,且i从0取值
x1=[np.pi*0.55+np.pi*i*2/25 for i in range(0,25)]
#雷达背景网格线默认on,设置off就是不显示
ax.axis('off')
#values=[1,2,3,3,3,3,3,4,4,4,6,6,6,7,8,10,11,11,12,12,13,13,14,25,32]
#y1代表扇形bar高低,这里的数值是示意图,如果采用上面的values值,那就显示不好看
y1=[1500,1500,1500,1700,1900,2000,2100,2200,2200,2200,2200,2300,2300,2500,2500,2500,2600,2700,2800,2800,2900,2900,3000,3500,4100]
#注意width 5分之π,就是10个柱子连在一起
#画25组扇形设置,x1位置,高低height,宽度width,颜色设置
ax.bar(x=x1, height=y1,width=np.pi*2/25,color=color,edgecolor='w')
#画中心白色圆圈,半径1000
y2=[1000 for i in range(0,25)]
#w=white=白色
ax.bar(x=x1, height=y2,width=np.pi/5,color='w',edgecolor='w')
#增加u和fontproperties=my_font,可加u可不加u
plt.title(u'南丁格尔玫瑰图matplotlib-radar法',fontproperties=my_font)
plt.show()
6.2 图
7.echarts法:
7.1 代码:注意保存后,文件名:xxx.html
7.2 讲后缀改为xxx.html,双击打开即可
7.3 图
8.excel法
8.1.新建一个excel
注意本机是wps的excel,后缀是xls,与差不多操作
8.2.新建一组25×9的表格,全部为1
图e1
8.3.选中----插入----二维饼图----环形图,如图e2
8.4.点击圆环内圆,单击右键----弹出:选系列1或者1~9都可以,最好是1,就是第1列
调节圆环图内径大小一个合适的内圆
图e3
8.5.然后对局部颜色进行调整,很麻烦。
8.6.完成
图e4
小结完成。
向医护人员致敬!
向南丁格尔护士致敬!
向央视新闻和人民日报的制图人员致敬!