在matplotlib中设置y轴限制

时间:2010-09-23 11:32:39

标签: python matplotlib

我需要帮助在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))

根据我对此图的数据,我得到20和200的y轴限制。但是,我想要限制20和250.

9 个答案:

答案 0 :(得分:464)

试试这个。也适用于次要情节。

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])

答案 1 :(得分:107)

您的代码也适用于我。但是,另一种解决方法是获取绘图的轴,然后仅更改y值:

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

答案 2 :(得分:32)

您可以做的一件事就是使用matplotlib.pyplot.axis自行设置轴范围。

<强> matplotlib.pyplot.axis

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

plt.ylim(-2, 2)
plt.xlim(0,10)

答案 3 :(得分:9)

要添加@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)

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

答案 4 :(得分:6)

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

答案 5 :(得分:3)

这至少在matplotlib 2.2.2版中起作用了:

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

这可能是一个很好的方法来设置例如xmin和ymax等等。

答案 6 :(得分:1)

仅用于微调。如果只想设置轴的边界之一,而又不改变其他边界,则可以选择以下一个或多个语句

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

看看xlimylim的文档

答案 7 :(得分:0)

如果一个轴(由问题中显示的代码下方的代码生成)与第一个轴共享范围,请确保在之后设置范围那个轴的最后一个情节。

答案 8 :(得分:0)

您可以从matplotlib.pyplot.axes实例化对象,然后在其上调用set_ylim()。会是这样的:

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