Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matplotlib/pyplot: How to enforce axis range?

I would like to draw a standard 2D line graph with pylot, but force the axes' values to be between 0 and 600 on the x, and 10k and 20k on the y. Let me go with an example...

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) 

However, the axes still adjust to the size of the data. I'm interpreting the effect of p.axis to be setting what the max and min could be, not enforcing them to be the max or min. The same happens when I try to use p.xlim() etc.

Any thoughts?

Thanks.

like image 735
Stuart Avatar asked Nov 09 '10 16:11

Stuart


People also ask

How do I change the axis range in Matplotlib?

MatPlotLib with Python To change the range of X and Y axes, we can use xlim() and ylim() methods.

How do you change axis bounds in Python?

To set the lower axis limit, we use xlim() and ylim() function and pass the left and bottom parameter respectively. To plot the graph, use plot() function. To set the labels at the axes, use xlabel() and ylabel() function. To display the graph, use show() function.


1 Answers

Calling p.plot after setting the limits is why it is rescaling. You are correct in that turning autoscaling off will get the right answer, but so will calling xlim() or ylim() after your plot command.

I use this quite a lot to invert the x axis, I work in astronomy and we use a magnitude system which is backwards (ie. brighter stars have a smaller magnitude) so I usually swap the limits with

lims = xlim() xlim([lims[1], lims[0]])  
like image 167
Simon Walker Avatar answered Sep 18 '22 19:09

Simon Walker