Wie man 'auto' für die Obergrenze einstellt, aber mit matplotlib.pyplot eine feste Untergrenze einhält


112

Ich möchte die Obergrenze der y-Achse auf 'auto' setzen, aber ich möchte die Untergrenze der y-Achse so halten, dass sie immer Null ist. Ich habe 'auto' und 'autorange' ausprobiert, aber diese scheinen nicht zu funktionieren. Vielen Dank im Voraus.

Hier ist mein Code:

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')

Antworten:


104

Sie können nur leftoder rightan Folgendes übergeben set_xlim:

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

Verwenden Sie für die y-Achse bottomoder top:

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

1
Ich habe eine Fehlermeldung erhalten, als ich die linke Seite für set_ylim übergeben habe. Ich habe dies stattdessen verwendet: plt.gca (). Set_ylim (ymin = 0) Vielen Dank für Ihre Hilfe.
— Vietnamnaste

Sie können auch die Grenzwerte für die aktuelle Achse verwenden plt.xlimoder plt.ylimfestlegen.
— Chris

26
Wenn ich dies tue, bleibt die Obergrenze bei dem Wert, in dem das Fenster instanziiert wird. Sie bleibt nicht automatisch skaliert.
— Elliot

8
Gleiches Problem wie @Elliot hier. Kann durch Einstellen des (einseitigen) ylim / xlim nach dem Zeichnen der Werte behoben werden.
— Fabianfuchs

5
Stellen Sie sicher, dass Sie den Grenzwert nach dem Zeichnen der Daten festlegen. Andernfalls wird der obere Grenzwert standardmäßig auf 1 gesetzt.
— Banana

37

Stellen Sie einfach xlimeine der Grenzen ein:

plt.xlim(xmin=0)

5
xminund xmaxwurden zugunsten von leftund rightin Matplotlib 3.0 abgelehnt .
— Onewhaleid

12

Wie oben erwähnt und gemäß der Matplotlib-Dokumentation können die x-Grenzen einer bestimmten Achse axmit der set_xlimMethode der matplotlib.axes.AxesKlasse festgelegt werden.

Zum Beispiel,

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

Ein Limit kann unverändert bleiben (z. B. das linke 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)

Um die x-Grenzen der aktuellen Achse matplotlib.pyplotfestzulegen, enthält das Modul die xlimFunktion, die nur matplotlib.pyplot.gcaund umschließt 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

Verwenden Sie für die y-Grenzen matplotlib.axes.Axes.set_ylimoder matplotlib.pyplot.ylim. Die Schlüsselwortargumente sind topund bottom.


3

Fügen Sie einfach einen Punkt auf @silvio hinzu: Wenn Sie die Achse verwenden, um wie zu zeichnen figure, ax1 = plt.subplots(1,2,1). Dann ax1.set_xlim(xmin = 0)funktioniert auch!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.