将文本放在matplotlib图的左上angular
我怎样才能把文本放在matplotlibgraphics的左上angular(或右上angular),例如左上angular的图例是左上angular,还是左上angular? 例如,如果它是一个plt.scatter(),那么将在散点图的正方形内的东西放在最左上angular。
我想这样做,而没有理想地知道被绘制的散点图的比例,因为它将从数据集变成数据集。 我只是希望它的文字大致在左上方,或大致在右上方。 使用图例types定位,它不应该与任何散点图点重叠。
谢谢!
你可以使用text
。
text(x, y, s, fontsize=12)
text
坐标可以相对于坐标轴给出,所以文本的位置将独立于图的大小:
默认转换指定文本在数据坐标系中,或者,您可以在坐标轴中指定文本(0,0是左下angular,1,1是右上angular)。 下面的例子将文本放置在轴的中心::
text(0.5, 0.5,'matplotlib', horizontalalignment='center', verticalalignment='center', transform = ax.transAxes)
为了防止文字干扰您的分散点是更困难afaik。 更简单的方法是将ylim((ymin,ymax))
(ymax ylim((ymin,ymax))
)中的ylim((ymin,ymax))
设置为比点的最大y坐标稍高的值。 这样,你将永远有这个文本的自由空间。
编辑:这里你有一个例子:
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参数设置文本相对于插入点的alignment方式。 即。 ha ='left'是一个很好的设置,可以防止在手动缩小(变窄)框架时长文本超出左轴。
一种解决scheme是使用plt.legend
函数,即使你不想要一个实际的图例。 您可以使用loc
keyterm来指定图例框的位置。 更多的信息可以在这个网站find,但我还包括一个例子显示如何放置一个图例:
ax.scatter(xa,ya, marker='o', s=20, c="lightgreen", alpha=0.9) ax.scatter(xb,yb, marker='o', s=20, c="dodgerblue", alpha=0.9) ax.scatter(xc,yc marker='o', s=20, c="firebrick", alpha=1.0) ax.scatter(xd,xd,xd, marker='o', s=20, c="goldenrod", alpha=0.9) line1 = Line2D(range(10), range(10), marker='o', color="goldenrod") line2 = Line2D(range(10), range(10), marker='o',color="firebrick") line3 = Line2D(range(10), range(10), marker='o',color="lightgreen") line4 = Line2D(range(10), range(10), marker='o',color="dodgerblue") plt.legend((line1,line2,line3, line4),('line1','line2', 'line3', 'line4'),numpoints=1, loc=2)
请注意,因为loc=2
,图例位于图的左上angular。 如果文本与graphics重叠,则可以使用legend.fontsize
将其缩小,然后使图例变小。