AxesSubplot对象的xticks等效函数

77

我正在尝试使用Axes对象来控制我的matlibplot图形。我没有使用plt(也就是import matlibplot.pyplot as plt),因为我正在将图形嵌入到我的tkinter GUI中,参考this

然而,我还在图形中使用子图,所以类似于:

a = f.add_subplot(121)
a2 = f.add_subplot(122)
a.plot(fn2,mag)
a2.bar(range(0,10), magBin, width)

这很好,我可以使用轴属性来控制事物(即a.axesMethod()),但我想要我的条形图有字符串标签,参见this,请看code

我的困境是我不能使用

plt.xticks(ind+width, ('G1', 'G2', 'G3', 'G4', 'G5') )

就像範例一樣,因為我想將它嵌入我的Tkinter GUI中,所以我無法使用plt。我只能透過軸物件來做限制性的操作。我試圖使用a2.set_xticks,但這並不能提供我所需的字串作為刻度功能,而我需要這個功能用在我的長條圖上。

2个回答

119

您可以使用以下替代方案:

axes.set_xticks(ticks, minor=False)

axes.set_xticklabels(labels, fontdict=None, minor=False)

2

你也可以使用 set()

ax.set(xticks=ticks, xticklabels=labels)

需要注意两件事情:(a) len(ticks)==len(labels) 应该是 True,(b) 为了在整个轴上充分分布 xticks,请使用 ax.get_xlim() 获取 x 轴刻度的限制,并创建一个从限制开始和结束的值范围。因此,一个可工作的例子可能是:

f, ax = plt.subplots()
ax.plot([10, 20, 30, 40, 50], [1, 2.8, 3, 3.1, 5])
ax.get_xlim()  # (8.0, 52.0)
ax.set(xticks=range(8, 53, 10), xticklabels=['a', 'b', 'c', 'd', 'e'], yticks=range(1, 6), yticklabels=range(1, 6));

res


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接