关于python:在matplotlib中设置y轴限制

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值:

x1,x2,y1,y2 = plt.axis()
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)

当我想从默认绘图设置中缩小或放大一点时,我发现这特别有用。


您可以从matplotlib.pyplot.axes实例化对象并对其调用set_ylim()。就像这样:

1
2
3
import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

这应该工作。您的代码对我有效,例如Tamás和Manoj Govindan。看来您可以尝试更新Matplotlib。如果您无法更新Matplotlib(例如,如果您没有足够的管理权限),也许将另一个后端与matplotlib.use()一起使用可能会有所帮助。


这至少在matplotlib 2.2.2版中有效:

1
plt.axis([None, None, 0, 100])

大概这是设置例如xmin和ymax等的好方法。


如果某个轴(由问题下方代码下方的代码生成)与前一个轴共享范围,请确保将范围设置为该轴的最后一个绘图之后。