2014-09-30 15 views
50

Ich verwende matplotlib, um Daten (mit plot und errorbar Funktionen) von Python zu plotten. Ich muss eine Reihe von völlig separaten und unabhängigen Plots zeichnen und dann anpassen, dass sie ylim Werte sind, so dass sie leicht visuell verglichen werden können.matplotlib erhalten Ylim-Werte

Wie kann ich die ylim Werte von jedem Diagramm abrufen, so dass ich die Min- und Max-Werte des unteren bzw. oberen Ylim-Wertes ermitteln und die Diagramme so anpassen kann, dass sie visuell verglichen werden können?

Natürlich könnte ich nur die Daten analysieren und mit meinen eigenen benutzerdefinierten ylim Werte kommen ... aber ich würde gerne matplotlib verwenden, um das für mich zu tun. Irgendwelche Vorschläge, wie man das einfach (und effizient) macht?

Hier ist meine Python-Funktion, die matplotlib mit Plots:

import matplotlib.pyplot as plt 

def myplotfunction(title, values, errors, plot_file_name): 

    # plot errorbars 
    indices = range(0, len(values)) 
    fig = plt.figure() 
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.') 

    # axes 
    axes = plt.gca() 
    axes.set_xlim([-0.5, len(values) - 0.5]) 
    axes.set_xlabel('My x-axis title') 
    axes.set_ylabel('My y-axis title') 

    # title 
    plt.title(title) 

    # save as file 
    plt.savefig(plot_file_name) 

    # close figure 
    plt.close(fig) 

Antwort

64

Nur axes.get_ylim() verwenden, ist es sehr ähnlich set_ylim. Vom docs:

get_ylim()

Holen Sie sich den y-Achsen-Bereich [unten, oben]

+0

Gibt es eine Möglichkeit, die Diagrammbereichsgrenze anstatt der Achsengrenze zu erhalten? Das schwarze Begrenzungsrechteck liegt geringfügig über diesen Werten. –

18
ymin, ymax = axes.get_ylim() 

Wenn Sie die plt Struktur verwenden, warum auch bei der Mühe Achsen? Das sollte funktionieren:

def myplotfunction(title, values, errors, plot_file_name): 

    # plot errorbars 
    indices = range(0, len(values)) 
    fig = plt.figure() 
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.') 

    plt.xlim([-0.5, len(values) - 0.5]) 
    plt.xlabel('My x-axis title') 
    plt.ylabel('My y-axis title') 

    # title 
    plt.title(title) 

    # save as file 
    plt.savefig(plot_file_name) 

    # close figure 
    plt.close(fig) 

Oder ist das nicht der Fall?

+0

Ihre vorgeschlagene Vereinfachung kann hilfreich sein. Ich möchte jedoch die Achsen selbst verwenden. Ich weiß es nicht wirklich, um ehrlich zu sein. – synaptik

+1

Ya, ich muss zugeben, dass ich in irgendeinem Matplotlib-Programm immer wieder hin und her gehe! –