我正在绘制X轴上有15个标签的雷达图表。数据绘制正确,但我无法正确定义轴标签。我得到的情节如下:

正如您所看到的,生成的轴滴答数少于生成的条数。如何生成相同数量的滴答(和相应的滴答标签),以清楚地区分每个条形?我想要的是类似于下面所示的图像:

我目前使用的代码如下:
fig = figure(figsize=(8,8))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True)
sample = np.random.uniform(low=0.5, high=13.3, size=(15,))
N = len(sample)
items=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15']
theta = np.arange(0, 2*np.pi, 2*np.pi/N)
bars = ax.bar(theta, sample, width=0.4)
ax.set_xticklabels(items)
ax.yaxis.grid(True)
show()我遗漏了什么?提前感谢!
发布于 2017-03-19 14:38:12
使用ax.set_xticklabels设置标签的文本。
你真正想要的是设置标签的位置。在本例中,位置只是theta数组的项。
ax.set_xticks(theta)一旦这些刻度被设定,人们当然可以改变标签,在这里,标签只是从1开始的第一个N数,
ax.set_xticklabels(range(1, len(theta)+1))一个完整的例子:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111,polar=True)
sample = np.random.uniform(low=0.5, high=13.3, size=(15,))
N = len(sample)
theta = np.arange(0, 2*np.pi, 2*np.pi/N)
bars = ax.bar(theta, sample, width=0.4)
ax.set_xticks(theta)
ax.set_xticklabels(range(1, len(theta)+1))
ax.yaxis.grid(True)
plt.show()

请注意,在2.x之前的matplotlib版本中,需要对条形图进行居中以获得上述结果
bars = ax.bar(theta, sample, width=0.4, align="center")https://stackoverflow.com/questions/42886076
复制相似问题