python极坐标图polar角度统计
踩坑日记2022.12.29
帮忙做一个统计角度的图,效果如下
做的时候脑抽了,犯了很多低级错误
#调整分辨率
fig = plt.figure(figsize=(20, 10))
#极坐标图
ax1 = plt.subplot(111, projection='polar')
#统计间隔为2pi/36,也就是10度,要统计350-360的区间就需要加上np.pi*2/36
bins = np.arange(0,2*np.pi+np.pi*2/36,np.pi*2/36)
# pandas统计,右闭区间,angleList角度or弧度画出来的图是一样的,但要和bins对应
cats = pd.cut(angleList, bins, right=True, include_lowest=True)
#x为对应区间统计频率
x = pd.value_counts(cats).sort_index()
print(x)
#bins里多了一个数,故取到-1即可
plt.polar(bins[0:-1], x,lw = 1, marker='*',alpha=0.9)
#相当于画了一个柱状图,width为每个扇形的宽度,单位是弧度,取10度为区间就可以这样写
#bins为区间起始点,bar的第一个参数相当于扇形的中线位置
#10度为区间的话就加上5度作为偏移值,画的图就和分布统计完全相同了,可以自己画一个不加偏移值的看一下,就懂了
bar = ax1.bar(bins[0:-1]+math.radians(5), x, width = math.radians(10),alpha=0.5)
#标注角度值
for r,b in zip(x,bins):
plt.text(b,r,str(math.degrees(b))[0:5])
#设置颜色
for r,bar in zip(x,bar):
bar.set_facecolor(plt.cm.jet(r/300.))
plt.title('angle')
plt.tight_layout()
# plt.show()
outdir = './数据/angle0/'
if not os.path.exists(outdir):
os.mkdir(outdir)
#保存图片
plt.savefig(outdir + outname + '.jpg')
细节很多,搞得我好烦