python用matplotlib画玫瑰_python 用 matplotlib 绘制 南丁格玫瑰图步骤详解

本文介绍如何使用Python的Matplotlib库绘制极坐标系下的南丁格尔玫瑰图,并通过数据排序、颜色映射、挖空中心及添加数据标注等技巧进行图表美化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、import

importstringimportnumpy as npimportmatplotlib as mplimport matplotlib.pyplot as plt

1、极坐标系

#设置画布

fig = plt.figure(figsize=(12, 8), #画布尺寸

facecolor='lightyellow' #画布背景色

)#设置极坐标系

ax = plt.axes(polar=True) #实例化极坐标系

ax.set_theta_direction(-1) #顺时针为极坐标正方向

ax.set_theta_zero_location('N') #极坐标 0° 方向为 N

效果:

1857668-20200614144842797-1356889329.png

2、添加数据绘制极条图

data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]

theta= np.linspace(0, 2*np.pi, len(data)) #等分极坐标系

#设置画布

fig = plt.figure(figsize=(12, 8), #画布尺寸

facecolor='lightyellow' #画布背景色

)#设置极坐标系

ax = plt.axes(polar=True) #实例化极坐标系

ax.set_theta_direction(-1) #顺时针为极坐标正方向

ax.set_theta_zero_location('N') #极坐标 0° 方向为 N

#在极坐标系中画柱形图

ax.bar(x=theta, #柱体的角度坐标

height=data, #柱体的高度, 半径坐标

width=0.33, #柱体的宽度

);

效果:

1857668-20200614145423765-488214010.png

3、对数据排序、添加颜色映射生成南丁格玫瑰图

data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]

data.sort()

theta= np.linspace(0, 2*np.pi, len(data)) #等分极坐标系

#设置画布

fig = plt.figure(figsize=(12, 8), #画布尺寸

facecolor='lightyellow' #画布背景色

)#设置极坐标系

ax = plt.axes(polar=True) #实例化极坐标系

ax.set_theta_direction(-1) #顺时针为极坐标正方向

ax.set_theta_zero_location('N') #极坐标 0° 方向为 N

#在极坐标系中画柱形图

ax.bar(x=theta, #柱体的角度坐标

height=data, #柱体的高度, 半径坐标

width=0.33, #柱体的宽度

color=np.random.random((len(data),3))

);

图形效果:

1857668-20200614150016089-1159436848.png

4、挖空中心、添加数据标注、关闭坐标轴和网格完成南丁格玫瑰图

data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]

data.sort()

theta= np.linspace(0, 2*np.pi, len(data)) #等分极坐标系

#设置画布

fig = plt.figure(figsize=(12, 8), #画布尺寸

facecolor='lightyellow' #画布背景色

)#设置极坐标系

ax = plt.axes(polar=True) #实例化极坐标系

ax.set_theta_direction(-1) #顺时针为极坐标正方向

ax.set_theta_zero_location('N') #极坐标 0° 方向为 N

#在极坐标系中画柱形图

ax.bar(x=theta, #柱体的角度坐标

height=data, #柱体的高度, 半径坐标

width=0.33, #柱体的宽度

color=np.random.random((len(data_list),3))

)## 绘制中心空白

ax.bar(x=theta, #柱体的角度坐标

height=130, #柱体的高度, 半径坐标

width=0.33, #柱体的宽度

color='white')#添加数据标注

for angle, data, lab inzip(theta, data_list, labs):

ax.text(angle+0.03, data+100, str(data) )

ax.set_axis_off();

图形效果:

1857668-20200614151901464-1100976526.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值