当我向matplotlib图中添加文本时,该文本超出了轴的当前限制,则轴不会调整,文本将位于图的轴之外。我有什么办法(几乎)自动调整轴的限制,以使文本落入轴内?
这是一个最小的(非工作)示例:
vm.saveRecord = function() {
var services = { function1, function2, function3, function4 },
service = vm.valueTrue
? vm.otherValue
? 'function1'
: 'function2'
: vm.otherValue
? 'function3'
: 'function4';
services[service].callEndPoint(param1, param2).then(
function successCallback(response) {
if(response) {
//successful response
}
}, function errorCallback(response) {
//error
}
)
};
最小的例子当然是人为的,可以手动解决。在我的真实情况下:
注意:本身,这没什么大问题,但是我特别要结合使用matplotlib和Jupyter笔记本以及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()
命令,在该图中图形的可见部分仅限于轴内的零件(带有一些填充)。结果,上面添加的两个文本行被切断或根本不可见。
不过,我觉得这是两个独立的问题,因此在一个问题中处理两个问题可能不合适。如果我能解决前一个问题,我认为后者也会解决。
答案 0 :(得分:0)
您可以使用以下内容:
axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
设置轴的极限。如果将这些限制存储为变量,则可以将文本设置为相对于这些变量。例如,如果您设置:
xmax, ymax = 10, 10
然后,您可以将文本设置为xmax - 2
和ymax - 2
之类的位置。
这将使您的绘图更大,并确保文本在其中。
如果您不知道绘图的大小(例如,您不知道数据的限制),则可以自动找到数据的最大值(使用max()
);加一点,使地块比需要的大;然后执行以上操作。
答案 1 :(得分:0)
我将使用的最直接的解决方案是,通过使用其他表示方法(例如imagemagick)添加标题,以在情节之外进行注释。
答案 2 :(得分:0)
我不确定您要在哪里放置文本,但是请尝试以下操作:
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
x = [1, 2, 3, 4, 5]
y = [3, 2, 4, 1, 5]
plt.scatter(x,y)
minx,maxx = min(x),max(x)
miny,maxy = min(y),max(y)
plt.text(minx,miny, "This text goes outside the plot. If you have a longer text,\n you can do a line break.")
plt.text(minx,maxy, "This text is entirely outside the plot.")
plt.show()