setting y-axis limit in matplotlib
I need help with setting the limits of y-axis on matplotlib. Here is the code that I tried, unsuccessfully.
import matplotlib.pyplot as plt plt.figure(1, figsize = (8.5,11)) plt.suptitle('plot title') ax =  aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1") ax.append(aPlot) plt.plot(paramValues,plotDataPrice, color = '#340B8C', marker = 'o', ms = 5, mfc = '#EB1717') plt.xticks(paramValues) plt.ylabel('Average Price') plt.xlabel('Mark-up') plt.grid(True) plt.ylim((25,250))
With the data I have for this plot, I get y-axis limits of 20 and 200. However, I want the limits 20 and 250.
Try this . Works for subplots too .
axes = plt.gca() axes.set_xlim([xmin,xmax]) axes.set_ylim([ymin,ymax])
Read more... Read less...
Your code works also for me. However, another workaround can be to get the plot's axis and then change only the y-values:
x1,x2,y1,y2 = plt.axis()
One thing you can do is to set your axis range by yourself by using matplotlib.pyplot.axis.
from matplotlib import pyplot as plt plt.axis([0, 10, 0, 20])
0,10 is for x axis range. 0,20 is for y axis range.
or you can also use matplotlib.pyplot.xlim or matplotlib.pyplot.ylim
plt.ylim(-2, 2) plt.xlim(0,10)
You can instantiate an object from
matplotlib.pyplot.axes and call the
set_ylim() on it. It would be something like this:
import matplotlib.pyplot as plt axes = plt.axes() axes.set_ylim([0, 1])
This worked at least in matplotlib version 2.2.2:
plt.axis([None, None, 0, 100])
Probably this is a nice way to set up for example xmin and ymax only, etc.
To add to @Hima's answer, if you want to modify a current x or y limit you could use the following.
import numpy as np # you probably alredy do this so no extra overhead fig, axes = plt.subplot() axes.plot(data[:,0], data[:,1]) xlim = axes.get_xlim() # example of how to zoomout by a factor of 0.1 factor = 0.1 new_xlim = (xlim + xlim)/2 + np.array((-0.5, 0.5)) * (xlim - xlim) * (1 + factor) axes.set_xlim(new_xlim)
I find this particularly useful when I want to zoom out or zoom in just a little from the default plot settings.