Python数据分析实战【第三章】3.11-Matplotlib极坐标图【python】1.创建极坐标轴
s = pd.Series(np.arange(20))
theta=np.arange(0,2*np.pi,0.02)
print(s.head())
print(theta[:10])
# 创建数据
fig = plt.figure(figsize=(8,4))
ax1 = plt.subplot(121, projection ='polar')
ax2 = plt.subplot(122)
# 创建极坐标⼦图
# 还可以写:ax = fig.add_subplot(111,polar=True)
ax1.plot(theta,theta*3,linestyle ='--',lw=1)
ax1.plot(s, linestyle ='--', marker ='.',lw=2)
ax2.plot(theta,theta*3,linestyle ='--',lw=1)
ax2.plot(s)
# 创建极坐标图,参数1为⾓度(弧度制),参数2为value
# lw →线宽
---------------------------------------------------------------------
00
11
22
33
44
dtype: int32
[0.0.020.040.060.080.10.120.140.160.18]
2.极坐标参数设置
theta=np.arange(0,2*np.pi,0.02)
plt.figure(figsize=(8,4))
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
# 创建极坐标⼦图ax
ax2.set_theta_direction(-1)
# set_theta_direction():坐标轴正⽅向,默认逆时针
ax2.set_thetagrids(np.arange(0.0,360.0,90),['a','b','c','d'])
ax2.set_rgrids(np.arange(0.2,2,0.4))
# set_thetagrids():设置极坐标⾓度⽹格线显⽰及标签→⽹格和标签数量⼀致# set_rgrids():设置极径⽹格线显⽰,其中参数必须是正数
ax2.set_theta_offset(np.pi/2)
# set_theta_offset():设置⾓度偏移,逆时针,弧度制
ax2.set_rlim(0.2,1.2)
ax2.set_rmax(2)
ax2.set_rticks(np.arange(0.1,1.5,0.2))
# set_rlim():设置显⽰的极径范围
# set_rmax():设置显⽰的极径最⼤值
# set_rticks():设置极径⽹格线的显⽰范围
3.雷达图1 - 极坐标的折线图/填图 - plt.plot()
plt.figure(figsize=(8,4))
ax1= plt.subplot(111, projection='polar')
ax1.set_title('radar map\n')  # 创建标题
ax1.set_rlim(0,12)
data1 = np.random.randint(1,10,10)
data2 = np.random.randint(1,10,10)
matplotlib中subplot
data3 = np.random.randint(1,10,10)
theta=np.arange(0,2*np.pi,2*np.pi/10)
# 创建数据
ax1.plot(theta,data1,'.--',label='data1')
ax1.fill(theta,data1,alpha=0.2)
ax1.plot(theta,data2,'.--',label='data2')
ax1.fill(theta,data2,alpha=0.2)
ax1.plot(theta,data3,'.--',label='data3')
ax1.fill(theta,data3,alpha=0.2)
# 绘制雷达线
4.雷达图2 - 极坐标的折线图/填图 - plt.polar() # ⾸尾闭合
labels = np.array(['a','b','c','d','e','f']) # 标签
dataLenth =6 # 数据长度
data1 = np.random.randint(0,10,6)
data2 = np.random.randint(0,10,6) # 数据
angles = np.linspace(0,2*np.pi, dataLenth, endpoint=False) # 分割圆周长data1 = np.concatenate((data1,[data1[0]])) # 闭合
data2 = np.concatenate((data2,[data2[0]])) # 闭合
angles = np.concatenate((angles,[angles[0]])) # 闭合
plt.polar(angles, data1,'o-', linewidth=1) #做极坐标系
plt.fill(angles, data1, alpha=0.25)# 填充
plt.polar(angles, data2,'o-', linewidth=1) #做极坐标系
plt.fill(angles, data2, alpha=0.25)# 填充
plt.thetagrids(angles *180/np.pi, labels) # 设置⽹格、标签
plt.ylim(0,10)  # polar的极值设置为ylim
5.极轴图 - 极坐标的柱状图
plt.figure(figsize=(8,4))
ax1= plt.subplot(111, projection='polar')
ax1.set_title('radar map\n')  # 创建标题
ax1.set_rlim(0,12)
data = np.random.randint(1,10,10)
theta=np.arange(0,2*np.pi,2*np.pi/10)
# 创建数据
bar = ax1.bar(theta,data,alpha=0.5)
for r,bar in zip(data, bar):
bar.set_jet(r/10.))  # 设置颜⾊
plt.thetagrids(np.arange(0.0,360.0,90),[]) # 设置⽹格、标签(这⾥是空标签,则不显⽰内容)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。