Matplotlib:雷达图 - 轴标签
Matplotlib: Radar Chart - axis labels
我正在尝试绘制一个在 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()
我错过了什么?提前致谢!
使用ax.set_xticklabels
设置标签的文本。
您真正想要的是设置标签的位置。在这种情况下,位置只是 theta
数组
的项目
ax.set_xticks(theta)
一旦设置了这些刻度,当然可以更改它们的标签,在这种情况下只是第一个 N
从 1 开始的数字,
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")
我正在尝试绘制一个在 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()
我错过了什么?提前致谢!
使用ax.set_xticklabels
设置标签的文本。
您真正想要的是设置标签的位置。在这种情况下,位置只是 theta
数组
ax.set_xticks(theta)
一旦设置了这些刻度,当然可以更改它们的标签,在这种情况下只是第一个 N
从 1 开始的数字,
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")