Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中设置y轴限制_Python_Matplotlib - Fatal编程技术网

Python 在matplotlib中设置y轴限制

Python 在matplotlib中设置y轴限制,python,matplotlib,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,plotDataPric

我需要在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。

这应该有效。你的代码对我有用,就像塔马斯和马诺吉·戈文丹一样。看起来您可以尝试更新Matplotlib。如果您无法更新Matplotlib(例如,如果您没有足够的管理权限),则可能使用另一个后端与
Matplotlib.use()
配合使用会有所帮助。

这应该可以。你的代码对我有用,就像塔马斯和马诺吉·戈文丹一样。看起来您可以尝试更新Matplotlib。如果无法更新Matplotlib(例如,如果您没有足够的管理权限),则可能使用另一个带有
Matplotlib.use()
的后端会有所帮助。

另一种解决方法是获取绘图轴并重新指定仅更改y值:

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

另一种解决方法是获取绘图轴并重新指定仅更改y值:

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

试试这个。也适用于子地块

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

试试这个。也适用于子地块

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

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

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

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

您可以做的一件事是使用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)

如果轴(由问题中所示代码下方的代码生成)与第一个轴共享范围,请确保在该轴的最后一个绘图后设置范围。

如果轴(由问题中所示代码下方的代码生成)与第一个轴共享范围,确保在该轴的最后一个绘图之后设置范围

这至少在matplotlib 2.2.2版中有效:

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

可能这是一种很好的设置方法,例如仅设置xmin和ymax等。

这至少在matplotlib 2.2.2版中有效:

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

可能这是一种很好的设置方法,例如仅设置xmin和ymax等。

您可以从
matplotlib.pyplot.axes
实例化一个对象,并在其上调用
set_ylim()
。应该是这样的:

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

您可以从
matplotlib.pyplot.axes
实例化一个对象,并在其上调用
set_ylim()
。应该是这样的:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 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

请查看用于和的文档,以便进行微调。如果要仅设置轴的一个边界,而不更改另一个边界,可以选择以下一个或多个语句

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


如果我在末尾添加
plt.show()
以显示绘图,请查看Matplotlib 1.0.0中适用于和的文档。您使用的是哪个版本和哪个后端?为我使用Matplotlib 0.98.5.2、Python 2.6.2。我尝试了
plt.ylim((25250))
plt.ylim(ymax=250,ymin=25)
。我正在使用
Agg
后端。谢谢你们两位。它是否适用于PDF后端。注意:
axisbg
现在已被弃用
plt。ylim
是解决此问题的正确现代解决方案。这里有一个很好的资源:如果我在最后添加
plt.show()
来显示绘图,那么Matplotlib 1.0.0对我来说很有用。您使用的是哪个版本和哪个后端?为我使用Matplotlib 0.98.5.2、Python 2.6.2。我尝试了
plt.ylim((25250))
plt.ylim(ymax=250,ymin=25)
。我正在使用
Agg
后端。谢谢你们两位。它是否适用于PDF后端。注意:
axisbg
现在已被弃用
plt。ylim
是解决此问题的正确现代解决方案。这里有一个很好的资源:感谢您的检查!我正在使用pdf后端(
matplotlib.use('pdf')
)。我使用的是最新版本的Enthound Python发行版附带的版本。你能看看它是否与PDF后端一起工作吗。谢谢它确实与Mac OS X上的PDF后端一起工作。您确定输出文件确实用
plt.savefig()
更新了吗?我想我意识到了这个问题。如果我在
plt.subplot
行中取出
aPlot=
,它也适用于我。似乎,如果将子批次分配给这样的变量,则必须使用其他一些设置轴限制的方法。这是真的吗?据我所知,
plt.ylim()
将限制应用于当前轴,这是在执行
plt.subplot()时设置的。我也不相信
plt.subplot()
关心它返回的轴如何使用(是否放入变量中,等等)。所以我认为它应该有效;它在我的机器上工作。谢谢你的检查!我正在使用pdf后端(
matplotlib.use('pdf')
)。我使用的是最新版本的Enthound Python发行版附带的版本。你能看看它是否能和这个机器一起工作吗