我需要帮助在matplotlib上设置y轴的限制。这是我尝试过的代码,但没有成功。

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的极限。


当前回答

要添加到@Hima的答案,如果你想修改当前的x或y限制,你可以使用下面的方法。

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()。大概是这样的:

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

另一种解决方法是获取绘图轴并重新分配仅改变y值:

x1,x2,y1,y2 = plt.axis()  
plt.axis((x1,x2,25,250))

要添加到@Hima的答案,如果你想修改当前的x或y限制,你可以使用下面的方法。

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)

我发现当我想缩小或放大默认的图形设置时,这个功能特别有用。

只是为了微调。如果您只想设置轴的一个边界,而让另一个边界保持不变,您可以选择以下语句中的一个或多个

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

看一下xlim和ylim的文档

这应该有用。你的代码对我有用,比如Tamás和Manoj Govindan。看起来您可以尝试更新Matplotlib。如果您无法更新Matplotlib(例如,如果您没有足够的管理权限),那么使用Matplotlib .use()使用不同的后端可能会有所帮助。