将文本放在matplotlib图的左上角 [英] Putting text in top left corner of matplotlib plot

查看:873
本文介绍了将文本放在matplotlib图的左上角的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将文本放在matplotlib图形的左上角(或右上角),例如左上角图例在哪里,或在情节顶部但在左上角?例如.如果是plt.scatter(),则将位于散点图正方形内的内容放在最左上角.

How can I put text in the top left (or top right) corner of a matplotlib figure, e.g. where a top left legend would be, or on top of the plot but in the top left corner? E.g. if it's a plt.scatter(), then something that would be within the square of the scatter, put in the top left most corner.

例如,我想在不理想地了解散点图比例的情况下执行此操作,因为它会随数据集的变化而变化.我只希望它的文字大致在左上方,或大致在右上方.使用图例类型定位时,它无论如何都不应与任何散点图点重叠.

I'd like to do this without ideally knowing the scale of the scatterplot being plotted for example, since it will change from dataset to data set. I just want it the text to be roughly in the upper left, or roughly in the upper right. With legend type positioning it should not overlap with any scatter plot points anyway.

谢谢!

推荐答案

您可以使用 text .

You can use text.

text(x, y, s, fontsize=12)

可以相对于轴给出

text坐标,因此文本的位置将与绘图的大小无关:

text coordinates can be given relative to the axis, so the position of your text will be independent of the size of the plot:

默认转换指定文本位于数据坐标中, 或者,您可以在坐标轴中指定文本(0,0位于左下角 而1,1位于右上角).下面的示例将文本放在中间 的轴数::

The default transform specifies that text is in data coords, alternatively, you can specify text in axis coords (0,0 is lower-left and 1,1 is upper-right). The example below places text in the center of the axes::

text(0.5, 0.5,'matplotlib',
     horizontalalignment='center',
     verticalalignment='center',
     transform = ax.transAxes)

要防止文本干扰散点图的任何点,都是比较困难的.较简单的方法是将y_axis(ylim((ymin,ymax))中的ymax)设置为比点的最大y坐标高一点的值.这样,您将始终拥有文本的可用空间.

To prevent the text to interfere with any point of your scatter is more difficult afaik. The easier method is to set y_axis (ymax in ylim((ymin,ymax))) to a value a bit higher than the max y-coordinate of your points. In this way you will always have this free space for the text.

这里有个例子:

In [17]: from pylab import figure, text, scatter, show
In [18]: f = figure()
In [19]: ax = f.add_subplot(111)
In [20]: scatter([3,5,2,6,8],[5,3,2,1,5])
Out[20]: <matplotlib.collections.CircleCollection object at 0x0000000007439A90>
In [21]: text(0.1, 0.9,'matplotlib', ha='center', va='center', transform=ax.transAxes)
Out[21]: <matplotlib.text.Text object at 0x0000000007415B38>
In [22]:

ha和va参数设置文本相对于插入点的对齐方式. IE. ha ='left'是一个很好的设置,可以防止在手动缩小(变窄)框架时,长文本从左轴移出.

The ha and va parameters set the alignment of your text relative to the insertion point. ie. ha='left' is a good set to prevent a long text to go out of the left axis when the frame is reduced (made narrower) manually.

这篇关于将文本放在matplotlib图的左上角的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆