2010-09-27 8 views
5

Was ich möchte, ist zu tun, sowohl die geom_bar beschriften() ‚s im folgenden Beispiel mit ihren jeweiligen Daten Etiketten. Bisher kann ich nur eins bekommen oder das andere zu zeigen:ggplot2 eine mehrschichtige bar Plotbeschriftung

dput():

x <- structure(list(variable = c("a", "b", "c"), f = c(0.98, 0.66, 
0.34), m = c(0.75760989010989, 0.24890977443609, 0.175125)), .Names = c("variable", 
"f", "m"), row.names = c(NA, 3L), class = "data.frame") 

ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") + 
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
coord_flip() 

Multilayered Bar Graph

Sehen Sie, wie auf der Innenseite des schwarzen ein Datenetikett ist. Im gleichen Grundstück, würde Ich mag die gleiche Sache auf der Innenseite der lila zu tun.

Antwort

6

wie funktioniert diese Arbeit für Sie:

ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") + 
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
geom_text(aes(y=m,label=paste(round(m*100),"%",sep="")),size=3, hjust=1.3, colour="white") + 
coord_flip() 
+0

Ich war ganz in der Nähe! Ich habe versucht, diese Schichtung von geom_text(), aber mit einer etwas anderen Ästhetik. Vielen Dank! –

3

Sie können einen anderen Ansatz zu berücksichtigen.

Wenn das Hauptziel des Diagramms ist, die Längen/Positionen der Balken zu vergleichen, dann erzeugt das Einschließen von Zahlen in den Balken "unscharfe" Balken, die es für das Auge/Gehirn schwieriger machen, die Länge/Position des Balkens richtig zu beurteilen Bar.

Wenn das Hauptziel, die Zahlen zu vergleichen ist, dann, was Sie haben, ist ein schlecht geschnitten Tisch (mit buntem Hintergrund), ist es einfacher, die Zahlen zu vergleichen, wenn sie richtig ausgerichtet ist.

Einige Alternativen würden eine separate Grafik und Tabelle (beide richtig angeordnet) enthalten oder die Zahlen in den Rand (richtig ausgerichtet) und nicht auf die Balken setzen oder eine Tabelle mit Balken in Randzellen erstellen. Vielleicht möchten Sie auch ein Punktdiagramm anstelle eines Balkendiagramms betrachten (ggplot2 sollte dies immer noch leicht machen), gestapelte Balken erlauben einen vernünftigen Vergleich nur der ersten (ganz links) Kategorie und der Summe, in Ihrem Beispiel ist es nicht einfach, das zu vergleichen relative Größe des schwarzen Teils der oberen und unteren Balken.

+1

persönlich meine Stimme war für eine Dotplot, aber es gibt einige Dinge Bosse einfach nicht lassen Sie ändern. –