【Python】数据分析:如何使用matplotlib和pyecharts制作南丁格尔玫瑰图

article/2025/11/1 10:35:16

目录

一、介绍

二、相关库

三、数据准备

四、pyecahrts代码实现

五、matplotlib代码实现


原文作者:我辈理想
版权声明:文章原创,转载时请务必加上[原文超链接](https://blog.csdn.net/qq_15028721?spm=1010.2135.3001.5421)、作者信息和本声明。

一、介绍

玫瑰图是弗罗伦斯·南丁格尔所发明的。又名为极坐标面积图,是一种圆形的直方图。 南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),适用于绘制比较、随时间变化的循环现象。和传统的饼图展示形式单一相比,南丁格尔玫瑰图更加绚丽,给人的感觉更直观、深刻,因此,南丁格尔玫瑰图在数据可视化领域的应用十分广泛。

文章介绍如何使用python制作玫瑰图,提供了2中方式:pyecharts生成html和matplotlib生成png。数据展示相对容易,中间的空心圆需要根据情况调整。

二、相关库

电脑系统:windows

编程语言:python

使用的库:pandas、pyecharts、matplotlib

pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。

Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。 Matplotlib可用于Python脚本,Python和IPython (opens new window)Shell、Jupyter (opens new window)笔记本,Web应用程序服务器和四个图形用户界面工具包。Matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 您只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等。 更多的示例,请参见基础绘图例子和示例陈列馆。

三、数据准备

数据的格式跟饼图类似,此处采用的是各国疫情累计确诊病例数。

疫情地区累计
美国178883533
印度100048254
巴西71639125
俄罗斯27912206
法国24429907
土耳其19820908
英国19771679
意大利19217810
西班牙181744811
阿根廷153137412
哥伦比亚148207213
德国1469991

四、pyecahrts代码实现

import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts# 读入数据,需要更改
df = pd.read_excel(r"C:\Users\lpf_a\PycharmProjects\ybt_clan\untitled1\30国.xlsx")
df = df.sort_values("累计")
v = df['疫情地区'].values.tolist()
d = df['累计'].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='750px'))
# 设置颜色
pie1.set_colors(color_series)
# 添加数据,设置饼图的半径,是否展示成南丁格尔图
pie1.add("222", [list(z) for z in zip(v, d)],radius=["15%", "100%"],center=["50%", "60%"],rosetype="area")
# 设置全局配置项
pie1.set_global_opts(title_opts=opts.TitleOpts(title='玫瑰图示例'),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")

五、matplotlib代码实现


# 1.中文
matplotlib.rcParams['font.sans-serif'] = ['simsun']  # 显示字体为宋体# 2.数据
df = pd.read_excel(r"C:\Users\lpf_a\PycharmProjects\ybt_clan\untitled1\30国.xlsx")
df = df.sort_values("累计")
p = df['疫情地区'].values.tolist()
r = df['累计'].values.tolist()# 3.画图
fig = plt.figure(figsize=(10, 6),  # 画布大小dpi=400,  # 分辨率facecolor='lightyellow',  # 背景色)
# 4.
ax = plt.axes(polar=True)  # 实例化极坐标系
# ax = plt.subplot(111, projection="polar")  # polar 投影(扫描方式,自正北方向顺时针)
ax.set_theta_zero_location("N")  # 极坐标 0° 方向为 N
ax.set_theta_direction(-1)  # 顺时针为极坐标正方向
theta = np.linspace(0, np.pi * 2, len(r), endpoint=False)  # 等分极坐标系
# 5.添加饼图
ax.bar(x=theta,  # 柱体的角度坐标height=r,  # 柱体的高度, 半径坐标width=np.pi / 6,  # 柱体的宽度  np.pi / 6color=np.random.random((len(r), 3)),  # 随机产生颜色align="edge")  # 原理圆心,设置偏离距离# 绘制中心空白
ax.bar(x=theta,  # 柱体的角度坐标height=13000000,  # 柱体的高度, 半径坐标width=np.pi / 6,  # 柱体的宽度color='white')
# 标注
ax.set_title('感染累计', fontdict={'fontsize': 20})
for angle, height, text in zip(theta, r, p):ax.text(angle + 0.25, height + 120, str(text), fontsize=9)  # 设置显示文本的位置以及字体大小plt.axis("off")
plt.savefig("南丁格尔图.png")
plt.show()


http://chatgpt.dhexx.cn/article/iwR9nGjD.shtml

相关文章

南丁格尔图(饼状)

今天来做一个南丁格尔图&#xff0c;参考官网&#xff0c;一会会把源码放上去&#xff0c;注释和详细的解释也会放在最下面供参考理解 基于VScode开发&#xff0c;我用的是子组件不是APP.vue code&#xff1a; <template> <div id"main" :style"{width…

[数据可视化] 南丁格尔玫瑰图

南丁格尔玫瑰图 南丁格尔玫瑰图又名鸡冠花图、极坐标区域图&#xff0c;是南丁格尔在克里米亚战争期间提交的一份关于士兵死伤报告时发明的一种图表&#xff0c;以表达军医院季节性的死亡率&#xff0c;从整体上来看: 这张图是用来说明并比较战地医院伤患因各种原因死亡的人数&…

数据分析软件图表详解-南丁格尔图的故事

DataViz数据可视化分析工具中的南丁格尔图也叫南丁格尔玫瑰图、鸡冠花图或极坐标区域图。是由弗洛伦斯南丁格尔发明的。南丁格尔是英国护士和统计学家&#xff0c;出生于意大利的一个英国上流社会的家庭。虽然出身贵族南丁格尔却选择了完全不同的人生道路&#xff0c;选择了当时…

网络层协议和数据链路层协议

1. IP 协议 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层)&#xff0c;它可以向传输层提供各种协议的信息&#xff0c;例如TCP、UDP等&#xff1b;对下可将IP信息包放到链路层…

数据链路层协议(1)

目录 1.获取IP地址 2.打开浏览器&#xff0c;在浏览器中的地址栏上输入需要访问的服务器的URL&#xff08;资源定位符&#xff09; 3.网关路由收到DNS请求报文后&#xff0c;将先查看数据帧的二层封装&#xff0c;确认该数据帧是给自己的&#xff0c;则将解二层封装看三层封…

【网络】-- 数据链路层

应用层&#xff08;http、https&#xff09;&#xff1a; 数据的使用。传输层&#xff08;UDP、TCP&#xff09;&#xff1a;网络通讯的细节&#xff0c;将数据可靠的从A主机跨网络送到B主机。网络层&#xff08;IP&#xff09;&#xff1a;提供一种能力&#xff0c;将数据从A主…

数据链路层重点协议

目录 1.以太网 2.MTU 3.ARP与RARP协议 1.以太网 1.1 概念 "以太网" 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了 一些物理层的内容。例如&#xff1a;规定了网络拓扑结构&#xff0c;访问控制方式…

计算机网络基础知识--数据链路层协议

目录 使用点对点信道的数据链路层 数据链路层的三个基本问题 封装成帧 透明传输 差错检测 点对点协议PPP PPP协议的组成 PPP帧的格式 数据链路层的协议数据单元是帧。数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把接收到的帧中的数据取出并上交网…

数据链路层之以太网协议

在 IP 数据包交付的过程中&#xff0c;在数据链路层会对数据包进行添加报头信息。以太网协议就是数据链路层的一个重要协议。这样说其实不太准确&#xff0c;因为以太网协议是一个规定数据链路层及物理层的协议&#xff0c;不能说它是数据链路层的一个协议。 以太网帧 以太网…

【计算机网络】数据链路层重点协议

目录 1. 认识以太网 1.1 以太网帧格式 2. 认识MTU 2.1 MTU对IP协议的影响 2.2 MTU对UDP协议的影响 2.3 MTU对TCP协议的影响 3. ARP协议 3.1 ARP协议的作用 3.2 ARP协议的工作流程 1. 认识以太网 以太网是一种局域网的技术规范&#xff0c;而不是一种具体的网络&am…

数据链路层协议(2)

目录 一.网络类型---根据数据链路层运行的协议进行划分 二.数据链路层运行的协议 1.HDLC---高级数据链路控制协议 2.PPP---点到点协议 &#xff08;1&#xff09;链路建立阶段---LCP&#xff08;链路控制协议&#xff09;建立 &#xff08;2&#xff09;认证阶段---PAP&…

数据链路层协议封装

常用的两种数据链路层帧&#xff1a; 以太网帧和PPP帧的区别&#xff1a; 最大的区别&#xff0c;以太网是一个广播链路&#xff0c;一个广播域可能有多个设备&#xff0c;所以以太网帧有MAC地址&#xff0c;为了在整个以太网中确定一个唯一确定到底哪个设备进行接收&#xff0…

网络层IP协议与数据链路层以太网协议

文章目录 一、IP协议IP地址地址管理路由选择DNS 二、以太网协议以太网帧MTU 一、IP协议 IP协议是我们网络层的代表协议&#xff0c;今天我们就来一起学习一下吧&#xff0c;我们这里介绍的主要是IPv4协议。 版本&#xff1a;指定IP协议的版本&#xff0c;版本的取值只有4&…

TCP/IP协议详解篇三(链路层)

文章目录 数据链路层(DataLinkLayer)点对点信道数据链路层通信时的主要步骤三个基本问题封装成帧透明传输差错检测 点对点PPP协议PPP协议满足的需求PPP协议的组成PPP协议的帧格式透明传输字符填充法零比特填充法 PPP协议的工作过程 局域网的数据链路层局域网的拓扑结构媒体共享…

数据链路层-------以太网协议

这里写目录标题 数据链路层点对点协议&#xff08;PPP协议&#xff09;以太网协议认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对上层协议的影响查看硬件地址和MTU ARP协议(地址解析协议)ARP协议的作用ARP数据报格式ARP协议的工作原理 数据链路层 主要…

【网络协议详解】——数据链路层协议(学习笔记)

&#x1f4d6; 前言&#xff1a;数据链路层是 OSI 模型中的第二层&#xff0c;位于物理层之上&#xff0c;是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧&#xff0c;传输到物理层&#xff0c;并通过物理介质进行传输。同时&#xff0c;数…

【网络原理】数据链路层 和 应用层 重点协议

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录 &#x1f340;一. 以太网协议&#xff08;数据链路层&#xff09;&#x1f33b;二. DNS &#xff08;应用层&#xff09;&#x1f33f;三. 网络原理知识面试总结 &#x1f34…

数据链路层六大协议详解

数据链路层六大协议详解 一些假设1.无限制的单工协议(乌托邦协议)五点假设发送方接收方接受方 2.单工停-等协议3.有噪声信道的单工协议 本文图片截取自 学堂在线-华南理工大学的计算机网络课程 一些假设 物理层、数据链路层和网络层各自是独立的处理进程机器A希望向B发送的是…

数据链路层相关协议

网络类型 ---根据数据链路层协议进行划分 MA ---多点接入网络&#xff08;BMA广播型&#xff0c;NBMA非广播型&#xff09;P2P---点到点的网络 以太网协议---需要使用MAC地址对不同的主机设备进行区分和标识 ---主要因为利用以太网组件的二层网络可以包含&#xff08;两个和两…

网络安全——数据链路层安全协议

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.数据链路层安全协议简介 1.数据链路安全性 二.局域网数据链路层协议 1…