上限に 'auto'を設定し、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')

回答:


104

あなたはちょうどleftまたはrightに渡すことができますset_xlim

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

y軸には、bottomまたはを使用しますtop

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

1
set_ylimの左側を渡したときにエラーが発生しました。代わりにこれを使用しました:plt.gca()。set_ylim(ymin = 0)ご協力ありがとうございます。
vietnastee 2012

plt.xlimまたはplt.ylimを使用して、現在の軸の範囲を設定することもできます。
Chris、

26
これを行うと、上限はウィンドウがインスタンス化する値に固執します。自動スケーリングのままではありません。
エリオット

8
ここで@Elliotと同じ問題。値をプロットした後、(片側)ylim / xlimを設定することで修正できます。
fabianfuchs 2015年

5
データをプロットした後、制限を設定することを確認し、または上限値は1にデフォルト設定されます
バナナ


12

前述のように、matplotlibのドキュメントによれば、クラスのメソッドをax使用して、特定の軸のx制限を設定できます。set_xlimmatplotlib.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)

1つの制限は変更されないままにすることができます(例:左の制限):

>>> 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.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_ylimまたはを使用しますmatplotlib.pyplot.ylim。キーワード引数はtopおよびbottomです。


3

@silvioに点を追加するだけです:のようにプロットするために軸を使用する場合figure, ax1 = plt.subplots(1,2,1)。その後ax1.set_xlim(xmin = 0)も動作します!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.