Darstellungsfehlerbalken vom Datenrahmen mit Seaborn FacetGrid

8

Ich möchte Fehlerbalken aus einer Spalte in einem Pandas-Datenrahmen auf einem Seaborn FacetGrid darstellen

%Vor%

Beispieldatenrahmen

%Vor%

Dieser Code funktioniert für Fehlerbalken mit fester Größe:

%Vor%

Aber ich kann es nicht mit Werten aus dem Datenrahmen arbeiten

%Vor%

oder

%Vor%

produzieren Fehlerbasen

BEARBEITEN:

Nach vielen Matplotlib-Dokumentenlesungen und verschiedenen Stackoverflow-Antworten, hier ist eine reine Matplotlib-Lösung

%Vor%

Anders als die Beschriftungen und die Achsenbegrenzung ist OK. In der Spalte "A" ist für jede Kategorie ein eigener Unterplot geplottet, der durch die Kategorie in der Spalte "B" gekennzeichnet ist. (Beachten Sie, dass die Zufallsdaten anders als oben sind)

Ich würde immer noch eine Pandas / Seaborn-Lösung mögen, wenn jemand irgendwelche Ideen hat?

    
elfnor 22.07.2014, 02:48
quelle

2 Antworten

8

Bei Verwendung von FacetGrid.map muss alles, was sich auf data DataFrame bezieht, als Positionsargument übergeben werden. Dies funktioniert in Ihrem Fall, weil yerr das dritte positionale Argument für plt.errorbar ist, obwohl ich demonstrieren möchte, dass ich das tips-Dataset verwenden werde:

%Vor%

Ich kann dann mit FacetGrid und errorbar plotten:

%Vor%

Beachten Sie jedoch, dass es Seaborn-Plotfunktionen gibt, um von einem vollständigen Dataset zu Plots mit Errorbars (mit Bootstrapping) zu wechseln, was für viele Anwendungen nicht erforderlich ist. Zum Beispiel könnten Sie factorplot :

verwenden %Vor%

Oder lmplot :

%Vor%

    
mwaskom 22.07.2014, 14:47
quelle
0

Sie zeigen nicht, was df['E'] tatsächlich ist und ob es eine Liste mit der gleichen Länge wie df['C'] und df['D'] ist.

Das Argument yerr keyword (kwarg) verwendet entweder einen einzelnen Wert, der für jedes Element in den Listen der Schlüssel C und D aus dem Datenrahmen übernommen wird, oder eine Liste von Werten, die die gleiche Länge wie diese Listen haben.

Also müssen C, D und E alle Listen gleicher Länge zugeordnet sein, oder C und D müssen Listen gleicher Länge sein, und E muss einem einzelnen float oder int zugeordnet sein. Wenn sich diese einzelne float oder int in einer Liste befindet, müssen Sie sie wie df['E'][0] extrahieren.

Beispiel matplotlib code mit yerr : Ссылка

Balkendiagramm-API-Dokumentation, die yerr beschreibt: Ссылка

    
user3834473 22.07.2014 03:13
quelle