Próbuję wykreślić skumulowany wykres słupkowy w R za pomocą ggplot. Chcę również uwzględnić procent w każdym kawałku taktu. Próbowałem śledzić posty: 1, , 3, ale wartości nie są dokładnie w ich odpowiednich blokach. Moje dane to plik w formacie dropbox.R ułożone wykres słupkowy geom_text
Mój kod wygląda następująco:
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")
Wyjście jest-
Każda pomoc jest mile widziana. Dziękuję za pomoc i czas!
Pomyśl o wartości y dajesz do 'geom_text'. Jest to wysokość każdego segmentu pręta. Musisz wykonać obliczenia arytmetyczne, aby obliczyć punkt środkowy (lub górę, lub cokolwiek) każdego segmentu pręta, dodać go jako oddzielną zmienną i użyć go jako zmiennej y w "geom_text". Pomocna może być funkcja 'cumsum'. – joran
Coś takiego jak to, obliczy pozycje y dla etykiet w punkcie środkowym każdego segmentu pręta: 'f <- ddply (f,. (Form, Sample_name, Sample_type), transformacja, pos = (kumulacja (procent) - 0.5 * Procent)) '(wymaga plyr), wtedy instrukcja' geom_text' powinna wyglądać następująco: 'geom_text (aes (x = Form, y = pos, label = Procent))' –