dibuje el valor de suma sobre la barra apilada en ggplot2
bar-chart (2)
¿Cómo dibujo el valor de la suma de cada clase (en mi caso: a = 450, b = 150, c = 290, d = 90) sobre la barra apilada en ggplot2? Aquí está mi código :
#Data
hp=read.csv(textConnection(
"class,year,amount
a,99,100
a,100,200
a,101,150
b,100,50
b,101,100
c,102,70
c,102,80
c,103,90
c,104,50
d,102,90"))
hp$year=as.factor(hp$year)
#Plotting
p=ggplot(data=hp)
p+geom_bar(binwidth=0.5,stat="identity")+
aes(x=reorder(class,-value,sum),y=value,label=value,fill=year)+
theme()
Puede hacer esto creando un conjunto de datos de totales por clase (esto se puede hacer de varias maneras, pero prefiero dplyr ):
library(dplyr)
totals <- hp %>%
group_by(class) %>%
summarize(total = sum(value))
Luego, agregue una capa
geom_text
a su gráfico, utilizando
totals
como conjunto de datos:
p + geom_bar(binwidth = 0.5, stat="identity") +
aes(x = reorder(class, -value, sum), y = value, label = value, fill = year) +
theme() +
geom_text(aes(class, total, label = total, fill = NULL), data = totals)
Puede hacer que el texto sea más alto o más bajo que la parte superior de las barras usando el argumento
vjust
, o simplemente agregando algún valor al
total
:
p + geom_bar(binwidth = 0.5, stat = "identity") +
aes(x = reorder(class, -value, sum), y = value, label = value, fill = year) +
theme() +
geom_text(aes(class, total + 20, label = total, fill = NULL), data = totals)