Как создать гистограмму с накоплением в ggplot2 с общей частотой И процентами - PullRequest
0 голосов
/ 10 июля 2019

У меня сложены гистограммы с общей частотой, и я просто хочу добавить процент для каждой категории на графике (см. Ссылку с изображением ниже).Другими словами, я просто хочу показать процент для каждой категории ниже числа, о котором сейчас сообщается.Например, вместо того, чтобы видеть «170» в первом баре, я хотел бы видеть «170 (85,4%)»;вместо «29» хотелось бы видеть «29 (14,6%)»;и т. д.

Это код, который у меня сейчас есть

networkmeasured <- data.frame(supp=rep(c("Article measures network", 
"Article does not measure network"), each=2), Type=rep(c("loosely about 
collab. gov.", "striclty about colla. gov"),2), Articles=c(29, 44, 170, 96))
head(networkmeasured)

#plotting the graph
ggplot(data=networkmeasured, aes(x=Type, y=Articles, fill=supp)) +
geom_bar(stat="identity")+
geom_text(aes(label=Articles), vjust=2, color="white", size=4)+
theme_minimal()

Заранее спасибо!

RB.

1 Ответ

0 голосов
/ 11 июля 2019

Как уже упоминалось в ASK, вы можете сделать это либо внутри, либо за пределами ggplot.В вашем конкретном примере вы можете сделать что-то вроде этого:

# summarising the data
networkmeasured2 <- networkmeasured %>% 
  group_by(Type, supp) %>% 
  summarise(Articles = sum(Articles)) %>% 
  mutate(perc = round(Articles/sum(Articles)*100, 2))

# plotting the graph  
ggplot(data=networkmeasured2, aes(x=Type, y=Articles, fill=supp)) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(Articles, " (", perc, "%)")), vjust=2, color="white", size=4) +
theme_minimal()

Example

...