AxesSubplot 对象的 xticks 的等效函数

问题描述 投票:0回答:2

所以我尝试使用 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
。我只能使用 Axes 对象做一些事情。我正在尝试使用
a2.set_xticks
,但这不允许将字符串用作条形图所需的刻度功能。

python matplotlib tkinter plot
2个回答
123
投票

您可以使用:

axes.set_xticks(ticks, minor=False)

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

3
投票

从 matplotlib 3.5.0 开始,您可以将标签作为第二个参数传递给

ax.set_xticks()
(第一个参数是刻度位置),与使用
plt.xticks()
的方式相同。所以一个有效的例子是:

f, ax = plt.subplots()
x = [10, 20, 30, 40, 50]
y = [1, 2.8, 3, 3.1, 5]
ax.plot(x, y)
ax.set_xticks(x, ['a', 'b', 'c', 'd', 'e'])

您也可以使用

set()

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

需要注意两件事:(a)

len(ticks)==len(labels)
应该为 True,并且 (b) 为了在整个轴上充分分布 x 刻度,请使用
ax.get_xlim()
获取 x 轴刻度的限制并创建一系列值在极限处开始和结束。所以一个有效的例子可能是:

f, ax = plt.subplots()
ax.plot(x, y)
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

© www.soinside.com 2019 - 2024. All rights reserved.