23

y=-1我的图形从y=10

我想在任意位置写一小段文字,比如 at x=2000, y=5:

ax.annotate('MgII', xy=(2000.0, 5.0),  xycoords='data')

现在我想要相同的,但这次文本必须在图形之外,但在我在数据坐标中标记的确切位置:

ax.annotate('MgII', xy=(2000.0, 10.5),  xycoords='data')

但它随后消失了(请记住我的图形从 -1 变为 10)。图形顶部有足够的可用空间。

而且,如果我指定

xy=(2000.0, 9.999)

然后标签几乎出现在我想要的位置,只是它离图片的顶部边框太近了。我想要它y=10.5,具体来说。

4

2 回答 2

45
ax.annotate('MgII', xy=(2000.0, 10.5), xycoords='data', annotation_clip=False)

默认情况下,在数据单位中,只有在轴中才会绘制注释。

使用混合变换可能会更好:

 trans = ax.get_xaxis_transform() # x in data untis, y in axes fraction
 ann = ax.annotate('MgII', xy=(2000, 1.05 ), xycoords=trans)
于 2013-08-30T16:57:02.687 回答
2

我刚刚遇到了同样的问题,并找到了另一个非常简单的解决方案。注释方法的选项:

annotation_clip=False

https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.annotate.html

于 2020-10-21T09:32:24.147 回答