如何在不首先调用plt.show
的情况下获取matplotlib轴的刻度标签?我正在尝试设置一组子图,操纵它们的窗口限制并勾选标签,然后将它们全部放在屏幕上。但是,get_xticklabels()
方法返回空字符串,除非调用plt.show
:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
ax.plot(1, 1)
print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text()))
plt.show()
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text()))
输出:
In [33]: %run plt_premature_ticks.py
before plt.show():
after plt.show(): 0.94
在实际显示数字之前尝试获取标签不是预期的行为吗?
答案 0 :(得分:4)
在fig.canvas.draw()
之前添加ax.get_xticklabels()
:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
ax.plot(1, 1)
fig.canvas.draw()
print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text()))
plt.show()
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text()))
答案 1 :(得分:0)
虽然HYRY给出了原始问题的正确答案,但我遇到了一些需要调用轴的draw
方法的情况实例以使刻度标签可见。在这种情况下,应该调用以下内容:
renderer = fig.canvas.get_renderer()
ax.draw(renderer)