Ich versuche, ein gestapeltes Balkendiagramm in R mit ggplot zu plotten. Ich möchte auch Prozent in jedem Stück Bars für dieses Stück enthalten. Ich habe versucht, den Pfosten 1, 2, 3 zu folgen, aber die Werte sind nicht genau in ihren jeweiligen Blöcken. Meine Daten sind eine Datei in dropbox.R gestapelt Balkendiagramm Plot geom_text
Mein Code ist wie folgt:
f<-read.table("Input.txt", sep="\t", header=TRUE)
ggplot(data=f, aes(x=Form, y=Percentage, fill=Position)) +
geom_bar(stat="identity", colour="black") +
geom_text(position="stack", aes(x=Form, y=Percentage, ymax=Percentage, label=Percentage, hjust=0.5)) +
facet_grid(Sample_name ~ Sample_type, scales="free", space="free") +
opts(title = "Input_profile",
axis.text.x = theme_text(angle = 90, hjust = 1, size = 8, colour = "grey50"),
plot.title = theme_text(face="bold", size=11),
axis.title.x = theme_text(face="bold", size=9),
axis.title.y = theme_text(face="bold", size=9, angle=90),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank()) +
scale_fill_hue(c=45, l=80)
ggsave("Output.pdf")
Der Ausgang ist-
Jede Hilfe wird sehr geschätzt. Vielen Dank für Ihre Hilfe und Zeit!
um die y-Wert Denken Sie 'geom_text' sind zu geben. Es ist die _Height_ jedes Balkensegments. Sie müssen einige Arithmetik berechnen, um den Mittelpunkt (oder Spitze oder was auch immer) jedes Balkensegments zu berechnen, fügen Sie das als eine separate Variable hinzu und verwenden Sie es als die y-Variable in 'geom_text'. Die Funktion "Cumsum" kann hilfreich sein. – joran
In diesem Fall werden die Y-Positionen für die Beschriftungen am Mittelpunkt jedes Balkensegments berechnet: 'f <- ddply (f,. (Formular, Beispielname, Beispieltyp), transformieren, pos = (cumsum (Prozent) - 0,5 * Prozent))) '(erfordert plyr), dann sollte die' geom_text' Anweisung lauten: 'geom_text (aes (x = Formular, y = pos, label = Prozentsatz))' –