2016-10-13 4 views
0

Ich möchte ein Balkendiagramm mit ggplot in R. Die Beispieldaten wird wie folgt erstellen:Wie man auf geom_bar in ggplot2 umschließt?

Name <- c('Sample1', 'Sample2', 'Sample3') 
Total <- c(86020045,30974095,1520609) 
Part <- c(41348957, 2956650, 595121) 
DT <- data.frame(Name,Total,Part) 
DT 
ggplot(DT, aes(Name, Total, fill=Name)) + 
     geom_bar(position="stack",stat="identity") 

Was möchte ich die Stapelbalkendiagramm dass jeder Gesamt Name zeigt zeigen zählt, und zeigen Sie die Anzahl der Teile in der Leiste + beschriften Sie die% davon in der Mitte der Leiste.

Gibt es eine Möglichkeit, dies zu tun? Ich habe hier gesucht, konnte aber keine Lösung finden.

+1

Sie müssen umformen: 'Bibliothek (Tidyverse); DT%>% muate (Not_Part = Gesamt - Teil)%>% select (-Total)%>% gather (Teil, Wert, Teil, Not_Part)%>% ggplot (aes (x = Name, y = Wert, Füllung = Teil)) + geom_bar (stat = 'Identität') 'und dann' geom_text' verwenden, um zu beschriften – alistaire

+0

@Alistaire Vielen Dank! das funktioniert wunderbar! – tmhs

Antwort

1

Oh ... Es scheint, als hätte jemand die Antwort bereits kommentiert, während ich es aufschrieb. Ich poste trotzdem meine, da es etwas anders ist.

DT <- transform(DT, Part0 = Total - Part) 

library(reshape2) 
DT2 <- melt(DT, id.vars = c("Name", "Total")) 
DT2 <- transform(DT2, perc = value/Total * 100) 

ggplot(DT2, aes(Name, perc, fill=variable)) + 
    geom_bar(position="stack",stat="identity") + 
    geom_text(data = subset(DT2, variable == "Part"), aes(y = (perc), 
     label = paste0("Total = ", Total, "\n", 
         "Part = ", value, "\n", 
         round(perc, 1), "%\n"))) 

Wenn Sie value statt perc verwenden, werden Sie eine proportionale Balkendiagramm erhalten, aber da die Summe für Probe 3 viel kleiner als Probe 1 ist, es wird schwierig sein, die Tabelle zu lesen. Also entschied ich mich dafür, Prozent anstelle der tatsächlichen Werte zu verwenden.

+0

Vielen Dank! In der Tat ist dies eine gute Möglichkeit, um das Verhältnis bei Sicht zu visualisieren. – tmhs

Verwandte Themen