python玫瑰图

import numpy as np
import matplotlib.pyplot as plt
import string
import math

x1=[np.pi*i/10 for i in range(1,21)]#这里要计算好角度问题,360°等于2pi,分成20份那就除以20.
x2=np.pi*1/30
#x2=[np.pi/15+np.pi*i/30 for i in range(1,61)]
fig=plt.figure(figsize=(13.44,7.5))
ax=fig.add_subplot(111,projection='polar')
ax.bar(x=x1,height=80,width=np.pi/10,bottom=15,color='w',edgecolor='k')#宽度等于X的长度 将x轴理解成平常的坐标轴,只是变换成了角度
ax.axis('off')#将坐标轴信息去掉
f=open('abc.txt','r')
liebiao=f.read().replace('GME','AH628_').replace('_g','').split('\n')[0:20]#这里的文档是获取标签用的。标签可以自己做
'''y=90
z=''
num=0
for x in x1:
    i=liebiao[num]
    plt.text(x, y, '%s' % eval('i'), ha='center',rotation=math.degrees(x))
    num+=1'''#中间这一段是给Bar上面加上标签 但是做的很丑

plt.rcParams['font.sans-serif'] =['Microsoft YaHei']


ax.bar(x=x1,height=65,width=np.pi/10,bottom=15,color='w',edgecolor='k')

for i in range(1,21):
    x2=x2+np.pi*1/10#要加上pi/10 因为是20个格子,要间隔
    ax.bar(x=float(x2), height=np.random.randint(20,40),width=np.pi/30,bottom=15,color='b',edgecolor='w')
x2=2*np.pi*1/30#x轴的起点换成自己需要的间隔
for i in range(1,21):
    x2=x2+np.pi*1/10
    ax.bar(x=float(x2), height=np.random.randint(20,40),width=np.pi/30,bottom=15,color='r',edgecolor='w')
x2=3*np.pi*1/30
for i in range(1,21):
    x2=x2+np.pi*1/10
    ax.bar(x=float(x2), height=np.random.randint(20,40),width=np.pi/30,bottom=15,color='g',edgecolor='w')
plt.show()

python玫瑰图_第1张图片

你可能感兴趣的:(python玫瑰图)