Wie verhindert man, dass sich zwei Etiketten in einem Balkendiagramm überlappen?

8

Das Bild unten zeigt ein Diagramm, das ich mit dem folgenden Code erstellt habe. Ich habe die fehlenden oder überlappenden Labels hervorgehoben. Gibt es eine Möglichkeit, ggplot2 zu sagen, dass es keine überlappenden Labels gibt?

%Vor%     
Martin 21.04.2013, 01:48
quelle

4 Antworten

10

Sie können eine Variante der bekannten Populationspyramide verwenden.

Einige Beispieldaten (Code inspiriert von Didzis Elferts Antwort):

%Vor%

Berechnen Sie die Zählwerte für jede Woche und konvertieren Sie dann eine Kategorie in negative Werte:

%Vor%

Zeichnen Sie das Diagramm. Beachten Sie, dass die Beschriftungen der y-Achse so angepasst sind, dass auf beiden Seiten der Grundlinie positive Werte angezeigt werden.

%Vor%

Die Handlung:

Für Produktionszwecke müssen Sie die entsprechenden Tick-Labels für die y-Achse dynamisch bestimmen.

    
Alexander Vos de Wael 26.04.2013, 21:18
quelle
7

Erstellt neue Beispieldaten (inspiriert durch den Code von @agstudy).

%Vor%

Mit der Funktion ddply() aus der Bibliothek plyr wurde der neue Datenrahmen text.df für Beschriftungen erstellt. Die Spalte count enthält die Anzahl der Beobachtungen in jeder Kombination von Week und Status . Dann wird die Spalte ypos hinzugefügt, die die kumulative Summe von count für jede Woche plus 15 enthält. Dies wird für die y-Position verwendet. Für Not-Shipped ypos ersetzt durch -10.

%Vor%

Jetzt werden die Beschriftungen mit geom_text() unter Verwendung eines neuen Datenrahmens gezeichnet.

%Vor%

    
Didzis Elferts 23.04.2013 05:26
quelle
5

Eine Lösung, um Überlappungen zu vermeiden, besteht darin, die Position von Balken und Texten zu umgehen. Um fehlende Werte zu vermeiden, können Sie ylim setzen. Hier ein Beispiel.

%Vor%     
agstudy 21.04.2013 03:28
quelle
3

Basierend auf dem Didzis-Plot können Sie auch die Lesbarkeit verbessern, indem Sie die Position auf der y-Achse konstant halten und den Text in der gleichen Farbe wie die Legende färben.

%Vor%

    
JT85 25.04.2013 14:59
quelle

Tags und Links