Matplotlib:雷达图 - 轴标签

巴贾吉

我正在尝试在 xaxis 上绘制带有 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()

我错过了什么?提前致谢!

存在的重要性欧内斯特

使用ax.set_xticklabels设置标签的文本。

您真正想要的是设置标签的位置。在这种情况下,位置只是theta数组的项目

ax.set_xticks(theta)

一旦设置了这些刻度,当然可以更改它们的标签,在这种情况下只是从 1N开始的第一个数字,

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")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章