python - 为什么无法在图例旁边进行注释?

标签 python matplotlib legend

我正在尝试将文本添加到与图例相邻的位置。这是我尝试过的:

import matplotlib.pyplot as plt
x = y = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x,y)
leg = ax.legend(['line 1'], loc=6, frameon=False)
plt.draw()
p = leg.get_window_extent()
ax.annotate('Annotation Text', (p.p0[0], p.p1[1]), (p.p0[0], p.p1[1]), 
        xycoords='figure pixels', zorder=9)
plt.show()

这正是 stackoverflow 问题 Get Matplotlib legend location? 中包含的脚本。 。当我运行完全相同的脚本时,会产生不同的结果。当我运行此脚本时,字符串“注释文本”出现在图的左下角。

郑重声明,我运行此脚本时 p 的值为 Bbox(x0=0.0, y0=0.0, x1=1.0, y1=1.0)

如何获得图例的坐标,最好是坐标轴坐标,即。轴.transAxes ?

我正在使用 matplotlib 1.5.0 和 python 2.7

最佳答案

您可以使用inverse_transformed将图形像素转换为轴分数:

import matplotlib.pyplot as plt

x = y = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x,y)

leg = ax.legend(['line 1'], loc=6, frameon=False)

fig.canvas.draw()

p = leg.get_window_extent().inverse_transformed(ax.transAxes)

ax.annotate('Annotation Text', (p.p0[0], p.p1[1]), xycoords='axes fraction')

这将产生如下图:

enter image description here

我还使用 matplotlib 1.5.0 和 python 2.7,无论脚本执行多少次,我总是得到相同的绘图。

关于python - 为什么无法在图例旁边进行注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524210/

相关文章:

python - 为什么 x 轴使用日期和 matplotlib 上 x 轴使用数字列表之间的绘图显示不同?

python - 如何在 Python 中绘制连续的正弦波?

r - ggplot 扩展图例颜色条

python - 如何使用 nargs ='+' 解析多个位置参数

Python 将最大数字的文件识别为文件名的一部分

python - 如何动态创建 PyQt 属性

python - basemap 上不同的地 block 大小

charts - 如何更改 NVD3 图表中的图例位置?

r - 如何更改ggplot2中图例的背景颜色?

python - 类型 'ListedColormap' 的对象没有 len()