Annotation mit Seaborns FacetGrid anpassen

8

Ich versuche, einige Figuren mit dem Seaborn-Modul in Python anzupassen, aber ich hatte nicht viel Glück beim Erstellen von benutzerdefinierten Beschriftungen oder Anmerkungen. Ich habe Code, der die folgende Abbildung generiert:

%Vor%

Ich möchte zwei Dinge tun: 1. Ersetzen Sie die Standard-Faktor-Labels, z. 'bot = 0.0', mit aussagekräftigem Text, und 2. zeichne vertikale Linien auf die mittlere Zahl, die für jede Kategorie folgt.

Hier ist ein in sich geschlossenes Beispiel:

%Vor%

Wer weiß, wie man FacetGrids anpasst?

    
Erin Shellman 26.07.2015, 00:21
quelle

1 Antwort

12

Ein paar Dinge über set_titles .

Zuerst werden die Standardtitel in der Methode FacetGrid.map gezeichnet. Wenn Sie also die Titel ändern möchten, müssen Sie set_titles nach dem Plotten aufrufen, andernfalls werden sie überschrieben.

Zweitens, wenn Sie sich den Docstring für die Methode ansehen, wird nicht nur eine willkürliche Liste von Titeln verwendet. Es bietet eine Möglichkeit, die Darstellung des Titels mithilfe des Spaltenvariablennamens und -werts zu ändern:

%Vor%

Der einfachste Weg also "aussagekräftigen Text" zu haben, ist die Verwendung aussagekräftiger Daten in Ihrem Datenrahmen. Nehmen Sie dieses Beispiel mit zufälligen Daten:

%Vor%

Wenn Sie möchten, dass "group" zero und one ist, sollten Sie nur diese Spalte ändern oder eine neue erstellen:

%Vor%

Dann sagen Sie, dass Sie nicht den Variablennamen im Titel haben wollen, der richtige Weg, um FacetGrid.set_titles zu verwenden wäre

%Vor%

Wenn Sie die zu plottenden Daten nicht ändern möchten, müssen Sie die Attribute für die Matplotlib-Achsen direkt festlegen, etwa:

%Vor%

Beachten Sie, dass dies der obigen Methode weniger vorzuziehen ist, da Sie sehr vorsichtig sein müssen, um sicherzustellen, dass die Reihenfolge Ihrer Liste korrekt ist und dass sie sich nicht ändert, während Sie die Informationen aus dem Datenframe selbst erhalten viel robuster.

Um den Mittelwert darzustellen, müssen Sie eine kleine Funktion erstellen, die an FacetGrid.map übergeben werden kann. Es gibt mehrere Beispiele Mach das im Tutorial. In diesem Fall ist es ziemlich einfach:

%Vor%

Dann müssen Sie nur noch neu plotten:

%Vor%

    
mwaskom 28.07.2015, 22:51
quelle

Tags und Links