如何用matplotlib.pyplot设置上限为“auto”,但保持固定的下限

92dk7w1h  于 2023-01-09  发布在  其他
关注(0)|答案(6)|浏览(288)

我想将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')
xoshrz7s

xoshrz7s1#

您可以只将leftright传递给set_xlim

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

对于y轴,使用bottomtop

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

重要提示:"必须在绘制数据后使用函数。如果不这样做,则左/下将使用默认值0,上/右将使用默认值1。"-Luc's answer.

mum43rcc

mum43rcc2#

只需将其中一个限值设置为xlim

plt.xlim(left=0)
zdwk9cvp

zdwk9cvp3#

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

>>> 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函数,该函数仅 Package matplotlib.pyplot.gcamatplotlib.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

kqqjbcuj

kqqjbcuj4#

set_xlimset_ylim允许使用None值来实现这一点。但是,您必须在绘制完数据后使用函数AFTER。如果不这样做,它将对左/下使用默认值0,对上/右使用默认值1。一旦设置了限制,每次绘制新数据时,它都不会重新计算“自动”限制。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([0, 1, 4, 5], [3, 5, 6, 9])
ax.set_xlim(left=2, right=None)
ax.set_ylim(bottom=None, top=7)

plt.show()

(I.e.,在上面的例子中,如果你在最后执行ax.plot(...),它不会给予想要的效果。)

holgip5t

holgip5t5#

只需在@silvio 's上添加一个点:如果你用坐标轴像figure, ax1 = plt.subplots(1,2,1)一样绘图。那么ax1.set_xlim(xmin = 0)也可以工作!

htrmnn0y

htrmnn0y6#

您还可以执行以下操作:

ax.set_xlim((None,upper_limit))
ax.set_xlim((lower_limit,None))

如果你想使用set(),这会很有帮助,因为它允许你一次设置几个参数:

ax.set(xlim=(None, 3e9), title='my_title', xlabel='my_x_label', ylabel='my_ylabel')

相关问题