❝💡 数据不会说话,但图表会。今天教你用 pyecharts 画出一张高颜值、有深度的“多省区市连续无新增病例天数玫瑰图”,让数据讲故事!📈
我们以某天全国各省市的“连续无新增确诊病例天数”为例,使用 pyecharts 制作一个 南丁格尔玫瑰图(Nightingale Rose Chart),直观展示各地“清零”状态。
📌 数据示例:
❝✅ 目标:通过扇形面积大小,反映各地“持续清零”的长短。
from pyecharts import options as optsfrom pyecharts.charts import Pieimport pandas as pd❝🔍 小贴士:
pyecharts是 Python 中最强大的可视化库之一,支持交互式图表安装命令: pip install pyecharts
我们将省份和对应“连续无新增天数”整理成 DataFrame:
provinces = ['北京', '上海', '黑龙江', '吉林', '辽宁', '内蒙古', '新疆', '西藏', '青海','四川', '云南', '陕西', '重庆', '贵州', '广西', '海南', '澳门', '湖南', '江西','福建', '安徽', '浙江', '江苏', '宁夏', '山西', '河北', '天津']num = [1, 1, 17, 9, 22, 23, 42, 35, 7, 20, 21, 16, 24, 16, 21, 37, 12, 13, 14, 13,7, 22, 8, 16, 13, 13]df = pd.DataFrame({'provinces': provinces, 'num': num})❝🔄 排序:按天数从大到小排序,突出重点区域
df.sort_values(by='num', ascending=False, inplace=True)c = Pie( init_opts=opts.InitOpts(width='1250px', height='750px'))❝📐 设置宽高,保证图片清晰不压缩
color_series = ['#FAB927', '#E9E416', '#C9DA36', '#9EBC3C', '#6DBC49','#37B44E', '#3DBA78', '#14ADCF', '#209AC9', '#1E91CA','#2C6BA0', '#2B55A1', '#2D3D8E', '#44388E', '#6A368B','#7D3990', '#A63F98', '#C31C88', '#D52178', '#D5225B','#D02C2A', '#D44C2D', '#F57A34', '#FA8F2F', '#D99D21','#CF7B25', '#CF7B25', '#CF7B25']c.set_colors(color_series)❝💡 使用渐变或柔和色系,避免视觉疲劳
v = df['provinces'].values.tolist() # 省份名d = df['num'].values.tolist() # 天数c.add("", [list(z) for z in zip(v, d)], radius=["30%", "100%"], # 内外圈半径 center=["50%", "50%"], # 图表中心位置 rosetype="area"# 南丁格尔玫瑰图模式)❝🌸
rosetype="area"→ 扇形面积与数值成正比,体现“清零时长”差异
c.set_global_opts( title_opts=opts.TitleOpts( title='多省区市\n确诊病例连续多日', subtitle='零新增', title_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#0085c3'), subtitle_textstyle_opts=opts.TextStyleOpts(font_size=50, color='#003399') ), pos_right='center', pos_left='center', pos_top='42%', pos_bottom='center', legend_opts=opts.LegendOpts(is_show=False), # 隐藏图例 toolbox_opts=opts.ToolboxOpts() # 显示工具栏)❝🖼️ 效果:标题分两行,主副标题搭配,突出“零新增”关键词
c.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="SimHei" ))❝✅ 标签显示在扇形内部,格式为:“省份:XX天”,字体为黑体,清晰可读!
c.render_notebook()❝📱 在 Jupyter Notebook 中直接显示图表🖼️ 若想保存为 HTML 文件:
c.render("zero_new.html")

❝🔷 一张圆形玫瑰图,扇形由大到小排列🔷 每个扇形代表一个省份,面积越大,表示“连续无新增天数”越长🔷 颜色丰富且协调,标签清晰标注“省份:XX天”🔷 可点击缩放、拖动查看细节,交互性强!
❝🎯 例如:广东(42天)、四川(35天)等大片扇形明显突出,而北京、上海仅1天,占比极小。
| 玫瑰图 |
❝✅ 特别适用于:疫情、销量、人口、消费等“排名类”数据!
Map 图表,实现“热力 + 玫瑰”双视图✅ 数据准备要规范:列名明确,排序合理✅ 配色要讲究:避免刺眼,突出重点✅ 配置要精细:标题、标签、交互一个都不能少!