所以我尝试使用 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
,但这不允许将字符串用作条形图所需的刻度功能。
您可以使用:
axes.set_xticks(ticks, minor=False)
和
axes.set_xticklabels(labels, fontdict=None, minor=False)
从 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));