Anzeigen von Daten Werte in gestapelten Balken-Diagramm in ggplot2
Möchte ich zeigen Daten Werte in gestapelten Balken-Diagramm in ggplot2. Hier mein versuchter code
Year <- c(rep(c("2006-07", "2007-08", "2008-09", "2009-10"), each = 4))
Category <- c(rep(c("A", "B", "C", "D"), times = 4))
Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251)
Data <- data.frame(Year, Category, Frequency)
library(ggplot2)
p <- qplot(Year, Frequency, data = Data, geom = "bar", fill = Category, theme_set(theme_bw()))
p + geom_text(aes(label = Frequency), size = 3, hjust = 0.5, vjust = 3, position = "stack")
Möchte ich zeigen, diese Werte in die Mitte jeder portion. Jede Hilfe in dieser Hinsicht wird sehr geschätzt werden. Dank
Verwandte Frage: stackoverflow.com/questions/18994631/...
Nicht wirklich der Ort für eine Debatte, aber ich Frage mich, ob es möglich ist, werden übermäßig präskriptiv zu dieser, besonders für das allgemeinere Publikum. Dies ist ein schönes Beispiel - die zahlen bezeichnen die Prozentsätze, kann daran erinnert werden, die beseitigt die Notwendigkeit für eine Skala, die weniger numerisch-kundige Leser kann weniger zugänglich?
Nicht wirklich der Ort für eine Debatte, aber ich Frage mich, ob es möglich ist, werden übermäßig präskriptiv zu dieser, besonders für das allgemeinere Publikum. Dies ist ein schönes Beispiel - die zahlen bezeichnen die Prozentsätze, kann daran erinnert werden, die beseitigt die Notwendigkeit für eine Skala, die weniger numerisch-kundige Leser kann weniger zugänglich?
InformationsquelleAutor MYaseen208 | 2011-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom
ggplot 2.2.0
Etiketten können leicht gestapelt werden, indem mitposition = position_stack(vjust = 0.5)
imgeom_text
.Beachten Sie auch, dass "
position_stack()
undposition_fill()
jetzt stack-Werte in der umgekehrten Reihenfolge der Gruppierung, das macht die Standard-stack-match um die Legende".Antwort gilt für ältere Versionen von
ggplot
:Ist hier ein Ansatz, berechnet die Mittelpunkte der Balken.
data.table
stattplyr
, so etwas wie dieses:Data.dt[,list(Category, Frequency, pos=cumsum(Frequency)-0.5*Frequency), by=Year]
Es ist trotzdem fügen Sie die Frequenz insgesamt zu?
InformationsquelleAutor Ramnath
Als hadley erwähnt, gibt es effektivere Wege, Ihre Botschaften als Etiketten in gestapelten Balkendiagrammen. In der Tat, gestapelte Diagramme sind nicht sehr effektiv, da die bars (jede Kategorie) nicht teilen, eine Achse, so dass ein Vergleich schwierig ist.
Ist es fast immer besser zwei Graphen in diesen Fällen eine gemeinsame Achse. In deinem Beispiel gehe ich davon aus, dass Sie zeigen wollen, Gesamt-und dann die Anteile jeder Kategorie einen Beitrag in einem bestimmten Jahr.
Dadurch erhalten Sie einen 2-panel-display wie diesem:
Wenn Sie hinzufügen möchten Frequenz Werte einer Tabelle ist das beste format.
InformationsquelleAutor AndrewMinCH