给轮廓添加标签

4
这段代码:
import numpy as np
import matplotlib.pyplot as plt

plt.contourf(np.random.random((10,10)), label='my_label')
plt.legend()

执行此操作将产生以下警告:

warnings.warn("未找到已标记的对象。")

是否有人知道如何对轮廓进行标注?
我只想以最简单的方式在绘图窗口内注释自动生成的轮廓。


这里的示例是否符合您的要求?我对您使用图例并说想要注释曲线感到困惑。 - tacaswell
这些是填充轮廓。在您链接的示例中,这是轮廓线上的经典图例。我不想这样做。我想给绘图命名,但不使用 title(),因为它会出现在绘图窗口之外,而是在内部。我想尝试使用标签,就像常规绘图一样,但它不起作用。 - theta
好的,我认为可以使用 annotate() 函数来完成,然后我会将其作为答案发布。 - theta
http://matplotlib.org/mpl_examples/pylab_examples/contourf_demo_01.png? - tacaswell
1个回答

2

我使用annotate()函数来标记我的填充轮廓:

screenshot

在上面的代码中,我使用了plt.legend()而不是:

plt.annotate('my_label', (8, 1), backgroundcolor='w')

因此,与label参数相比,唯一需要额外考虑的是用户需要知道文本将被定位的坐标。或者这就是我认为的。

更新:如评论中所建议的,用户可以选择axes fraction类型作为xycoords参数,并使用范围为[0,1]的相对参考来设置必需的xy点参数:

plt.annotate('my_label', (.9, .1), xycoords='axes fraction', backgroundcolor='w')


啊,完全不明白你的问题;)你可以使用annotate和坐标轴单位,http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.annotate,请参阅kwarg`xycoords`和`textcoords`的文档。 - tacaswell
是的,这就是为什么我写道用户需要知道绘图坐标(数组形状),而标签可以在没有这些考虑的情况下定位(即“左上角”,“中心”,“最佳位置”等)。 - theta
您正在使用数据坐标。轴坐标从[0, 0](左下角)到[1, 1](右上角),并且是轴高度和宽度的分数。 - tacaswell
1
http://matplotlib.org/users/annotations_guide.html,http://matplotlib.org/users/transforms_tutorial.html - tacaswell
谢谢@tcaswell,我更新了我的答案,包括您的发现。 - theta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接