猿问

将文本添加到 matplotlib 绘图时自动调整绘图限制

当我将文本添加到轴当前限制之外的 matplotlib 图中时,轴不会调整并且文本将在图轴之外。有没有办法让我(几乎)自动调整轴的限制,使文本落在轴内?


这是一个最小(非)工作示例:


import numpy as np

import matplotlib.pyplot as plt

plt.figure()

plt.scatter([1, 2, 3, 4, 5], [3, 2, 4, 1, 5])

plt.text(5, 3, "This text goes outside the plot.")

plt.text(3, 6, "This text is entirely outside the plot.")

plt.show()

最小的例子当然是人为的,可以手动解决。在我的真实情况下:

  • 该过程在不同的数据上重复多次。它经常重复,我不想为每个案例手动找出好的限制。

  • 文本的放置是有意义的并且基于数据,因此将文本移动到轴内的某个位置是没有意义的——我需要更改轴以适应文本。

注意:这本身不是问题,但我特别将 matplotlib 与 Jupyter notebooks 和%matplotlib notebook命令结合使用,其中绘图的可见部分仅限于轴内的部分(带有一些填充)。结果,上面添加的两个文本行被截断或根本不可见。

http://img1.mukewang.com/616e81cc0001333206680555.jpg

不过,我觉得这是两个独立的问题,因此在一个问题中处理这两个问题可能不合适;如果我能解决前一个问题,我想后一个问题也能解决。


ibeautiful
浏览 221回答 3
3回答

湖上湖

您可以使用以下内容:axes = plt.gca()axes.set_xlim([xmin,xmax])axes.set_ylim([ymin,ymax])设置轴的限制。如果这些限制存储为变量,则您可以将文本设置为相对于这些变量。例如,如果您设置:xmax, ymax = 10, 10然后你可以设置你的文字是一样的位置xmax - 2和ymax - 2。这将使您的情节更大,并保证文本在里面。如果你不知道你想要的图的大小(例如你不知道你的数据的限制),你可以自动找到你的数据的最大值(使用max());添加一点,使情节比需要的要大;然后执行上述操作。

qq_花开花谢_0

我会使用的最直接的解决方案是通过使用其他一些演示方法(如 imagemagick)来添加标题,在情节之外做笔记。
随时随地看视频慕课网APP

相关分类

Python
我要回答