轴标签(axis.xaxis.label
)看起来是matplotlib.text.Text
对象,但是当提取位置并试图在同一位置手动创建文本时,似乎有一个很大的偏移。在下面的例子中,我希望红色的“x”正好与黑色的“x”重叠,但事实并非如此。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_xlabel('x')
label = ax.xaxis.label
pos = label.get_position()
pos_display = label.get_transform().transform(pos)
label_red = plt.text(pos_display[0], pos_display[1], 'x', transform=None, fontdict={'color': 'r'})
plt.show()
此外,我无法深度复制标签Text
对象。在下面的例子中,我希望蓝色的“x”会覆盖黑色的,但它只是没有显示在图中。如果我试图复制label_red
而不是label
,那么确实蓝色的“x”会覆盖红色的。
from copy import copy
label_blue = copy(label)
label_blue.set_color('b')
ax.add_artist(label_blue)
plt.show()
那么,轴标签文本对象有什么特别之处呢?我的最终目标是在同一个轴上有一个二级标签。
1条答案
按热度按时间tmb3ates1#
一些Matplotlib对象直到绘制时才知道它们的真实位置。对于任何相对于其他艺术家具有位置的对象来说尤其如此。我们可以使用
fig.draw_without_rendering
强制绘制而无需实际创建绘图,然后标签的位置是已知的。此外,xlabel的垂直和水平对齐与使用ax.text
时的默认对齐不同(或plt.text
),因此您需要指定它们来匹配(请参阅下面的 ha 和 va 关键字)。