Python Matplotlib必需的x_ticks不会出现在雷达图上

时间:2019-12-05 17:00:29

标签: python matplotlib plot charts radar-chart

好的,我正在绘制一个雷达图,其中包含以下风向数据:

direction = ['N', 'NW', 'E', 'N', 'N', 'NW', 'NW', 'N', 'N', 'W', 'N', 'NW', 'NW', 'NW', 'N', 'SE', 'NE', 'E', 'E', 'NW', 'NE', 'S', 'E', 'W', 'W', 'NW', 'W', 'W', 'W', 'W', 'W', 'W', 'NW', 'W', 'W', 'W', 'W', 'W', 'W', 'NW', 'W', 'N', 'SE', 'E', 'NE', 'E', 'NE']

我收集图表上刻度的属性列表:

attributes = ['E', 'NE', 'N', 'NW', 'W', 'SW', 'S', 'SE']

然后,我在轴的属性和角度中列出与每个方向相对应的值列表:

values = [6, 4, 8, 10, 16, 0, 1, 2, 6]
angles = [n / float(len(attributes)) * 2 * math.pi for n in range(len(attributes)[![enter image description here][1]][1])]
angles += angles [:1]

然后作图:

ax3 = plt.subplot(111, polar=True)
plt.xticks(angles[:-1], attributes)
ax3.plot(angles,values)
ax3.fill(angles, values, 'teal', alpha=0.1)
ax3.set_title("Direction")
plt.show()

它工作正常(请参见 pic_1 )。但是,当我在项目中使用相同的东西时,对勾不会出现在图表上(请参见pic_2 )!这是代码(我在图上有4个子区域,雷达图是ax3-右下图):

fig = plt.figure(figsize=(12, 8))
ax1 = plt.subplot2grid(gridsize, (0, 0))
ax2 = plt.subplot2grid(gridsize, (1, 0))
ax3 = plt.subplot2grid(gridsize, (1, 1), polar=True)
ax4 = plt.subplot2grid(gridsize, (0, 1))
[...ax1...]
[...ax2...]
[...ax4...]
ax3.set_xticks(angles[:-1], attributes)
ax3.plot(angles, values)
ax3.fill(angles, values, 'teal', alpha=0.1)
ax3.set_title('Направление ветра')
plt.show()

怎么了?

pic_1 **with ticks**

pic_2 **no ticks**

1 个答案:

答案 0 :(得分:2)

如果要在轴上添加刻度线和刻度线标签(而不是像在第一个代码段中那样使用pyplot.xticks),则需要分别分配刻度线位置和标签。请尝试以下操作,而不要ax3.set_xticks(angles, attributes)

ax3.set_xticks(angles)
ax3.set_xticklabels(attributes)