Matplotlib / pyplot:如何执行轴范围?
我想用pylot绘制一个标准的二维线图,但强制x的值在0到600之间,在y上是10k和20k。 让我举个例子吧
import pylab as p p.title(save_file) p.axis([0.0,600.0,1000000.0,2000000.0]) #define keys and items elsewhere.. p.plot(keys,items) p.savefig(save_file, dpi=100)
但是,轴仍然适应数据的大小。 我正在解释p.axis的作用是设置最大值和最小值,而不是强制它们成为最大值或最小值。 当我尝试使用p.xlim()等同样的情况发生
有什么想法吗?
谢谢。
在设置极限之后调用p.plot
是为什么要重新resize。 你是正确的,转动autoscalingclosures将得到正确的答案,但也会在你的plot
命令之后调用xlim()
或ylim()
。
我用相当多的东西来反转X轴,我在天文学上工作,我们使用一个向后的震级系统(即更明亮的恒星具有更小的震级),所以我通常将极限与
lims = xlim() xlim([lims[1], lims[0]])
要回答我自己的问题,诀窍是closures自动缩放…
p.axis([0.0,600.0, 10000.0,20000.0]) ax = p.gca() ax.set_autoscale_on(False)
我尝试了所有上述答案,然后总结了如何绘制固定轴图像的stream水线。 它应用于show
function和savefig
function。
-
在你绘制之前:
fig = pylab.figure() ax = fig.gca() ax.set_autoscale_on(False)
这是要求一个ax
是subplot(1,1,1)
。
-
在剧情期间:
ax.plot('You plot argument') # Put inside your argument, like ax.plot(x,y,label='test') ax.axis('The list of range') # Put in side your range [xmin,xmax,ymin,ymax], like ax.axis([-5,5,-5,200])
-
剧情结束后:
-
要显示图像:
fig.show()
-
为了保存这个数字:
fig.savefig('the name of your figure')
-
我发现,即使我已经将autoscale_on
设置为False
,将axis
放在代码的前面将不起作用。
我用这个代码来创build一系列的animation。 下面是将多个固定轴图像组合成一个animation的例子。
尝试在所有绘图命令之后调用axis
。