setting y-axis limit in matplotlib
我需要在matplotlib上设置y轴限制的帮助。 这是我尝试失败的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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[0], 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)) |
使用此图的数据,我得到的Y轴限制为20和200。但是,我希望限制为20和250。
尝试这个 。也适用于子图。
1 2 3 | axes = plt.gca() axes.set_xlim([xmin,xmax]) axes.set_ylim([ymin,ymax]) |
您的代码也对我有用。但是,另一种解决方法是获取图的轴,然后仅更改y值:
plt.axis((x1,x2,25,250))
您可以做的一件事是使用matplotlib.pyplot.axis自行设置轴范围。
matplotlib.pyplot.axis
1 2 | from matplotlib import pyplot as plt plt.axis([0, 10, 0, 20]) |
0,10用于x轴范围。
0,20是y轴范围。
或者您也可以使用matplotlib.pyplot.xlim或matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
1 2 | plt.ylim(-2, 2) plt.xlim(0,10) |
要添加到@Hima的答案中,如果要修改当前的x或y限制,可以使用以下内容。
1 2 3 4 5 6 7 8 | 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[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) axes.set_xlim(new_xlim) |
当我想从默认绘图设置中缩小或放大一点时,我发现这特别有用。
您可以从
1 2 3 | import matplotlib.pyplot as plt axes = plt.axes() axes.set_ylim([0, 1]) |
这应该工作。您的代码对我有效,例如Tamás和Manoj Govindan。看来您可以尝试更新Matplotlib。如果您无法更新Matplotlib(例如,如果您没有足够的管理权限),也许将另一个后端与
这至少在matplotlib 2.2.2版中有效:
1 | plt.axis([None, None, 0, 100]) |
大概这是设置例如xmin和ymax等的好方法。
如果某个轴(由问题下方代码下方的代码生成)与前一个轴共享范围,请确保将范围设置为该轴的最后一个绘图之后。