2012-07-31 4 views
64

Ich möchte die obere Grenze der y-Achse auf "auto", aber ich möchte die untere Grenze der y-Achse ist immer Null. Ich habe 'Auto' und 'Autorange' versucht, aber das scheint nicht zu funktionieren. Vielen Dank im Voraus.Wie man "auto" für die obere Grenze setzt, aber eine feste untere Grenze mit matplotlib.pyplot

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

Antwort

66

Sie können nur left oder right-set_xlim passieren:

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

Für die y-Achse verwenden bottom oder top:

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

Ich habe einen Fehler, wenn ich die linke für die set_ylim übergeben. Ich habe dies stattdessen verwendet: plt.gca(). Set_ylim (ymin = 0) Vielen Dank für Ihre Hilfe. – vietnastee

+0

Sie können auch 'plt.xlim' oder' plt.ylim' verwenden, um die Grenzen für die aktuelle Achse festzulegen. – Chris

+18

Wenn ich dies tue, bleibt der obere Grenzwert bei jedem Wert, in dem das Fenster instanziiert wird. Es bleibt nicht automatisch Skalierung. – Elliot

23

Setzen Sie einfach xlim für eine der Grenzen:

plt.xlim(xmin=0) 
2

Nur einen Punkt auf @silvio ‚s hinzufügen: Wenn Sie Achse wie figure, ax1 = plt.subplots(1,2,1) plotten verwenden. Dann funktioniert auch ax1.set_xlim(xmin = 0)!

3

Wie oben erwähnt und entsprechend der matplotlib Dokumentation werden die x-Grenzen einer gegebenen Achse ax kann unter Verwendung der Methode der set_xlimmatplotlib.axes.Axes Klasse eingestellt 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) 

Eine Grenze (zum Beispiel der linke Grenze) unverändert gelassen werden kann:

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

zur x-Grenzen des aktuellen Achsensatzes, die matplotlib.pyplot Modul enthalten xlim Funktion, die nur matplotlib.pyplot.gca und umschließt.

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

ähnliche Weise für die Y-Grenzen, verwenden matplotlib.axes.Axes.set_ylim oder matplotlib.pyplot.ylim. Die Schlüsselwortargumente sind top und bottom.