如何为上限设置“自动”,但通过matplotlib.pyplot保持固定的下限


112

我想将y轴的上限设置为“自动”,但我想使y轴的下限始终为零。我尝试了“自动”和“自动调整范围”,但它们似乎不起作用。先感谢您。

这是我的代码:

import matplotlib.pyplot as plt

def plot(results_plt,title,filename):

    ############################
    # Plot results

    # mirror result table such that each parameter forms an own data array
    plt.cla()
    #print results_plt
    XY_results = []

    XY_results = zip( *results_plt)

    plt.plot(XY_results[0], XY_results[2], marker = ".")

    plt.title('%s' % (title) )
    plt.xlabel('Input Voltage [V]')
    plt.ylabel('Input Current [mA]')

    plt.grid(True)
    plt.xlim(3.0, 4.2)  #***I want to keep these values fixed"
    plt.ylim([0, 80]) #****CHANGE**** I want to change '80' to auto, but still keep 0 as the lower limit 
    plt.savefig(path+filename+'.png')

Answers:


104

您可以通过只leftrightset_xlim

plt.gca().set_xlim(left=0)

对于y轴,请使用bottomtop

plt.gca().set_ylim(bottom=0)

1
当我通过set_ylim的左侧时出现错误。我改用了它:plt.gca()。set_ylim(ymin = 0)谢谢您的帮助。
vietnastee,2012年

您也可以使用plt.xlimplt.ylim设置当前轴的限制。
克里斯(Chris)

26
当我这样做时,上限将保持为窗口实例化的任何值。它不会保持自动缩放。
Elliot 2014年

8
与@Elliot的问题相同。可以通过在绘制值后设置(单侧)ylim / xlim来固定。
fabianfuchs 2015年

5
确保数据绘制后设置的限制,或上限将默认为1
香蕉

37

只需设置xlim以下限制之一:

plt.xlim(xmin=0)

5
xminxmax已弃用,取而代之的left,并right在Matplotlib 3.0。
onewhaleid

12

如上所述,根据matplotlib文档,ax可以使用类的set_xlim方法设置给定轴的x极限matplotlib.axes.Axes

例如,

>>> ax.set_xlim(left_limit, right_limit)
>>> ax.set_xlim((left_limit, right_limit))
>>> ax.set_xlim(left=left_limit, right=right_limit)

一个限制可以保持不变(例如,左边限制):

>>> ax.set_xlim((None, right_limit))
>>> ax.set_xlim(None, right_limit)
>>> ax.set_xlim(left=None, right=right_limit)
>>> ax.set_xlim(right=right_limit)

要设置当前轴的x极限,matplotlib.pyplot模块包含xlim仅包装matplotlib.pyplot.gca和的函数 matplotlib.axes.Axes.set_xlim

def xlim(*args, **kwargs):
    ax = gca()
    if not args and not kwargs:
        return ax.get_xlim()
    ret = ax.set_xlim(*args, **kwargs)
    return ret

同样,对于y限制,请使用matplotlib.axes.Axes.set_ylimmatplotlib.pyplot.ylim。关键字参数为topbottom


3

只需在@silvio的点上添加一个点:如果使用轴绘制像figure, ax1 = plt.subplots(1,2,1)。然后ax1.set_xlim(xmin = 0)也可以!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.