Регулировка десятичных знаков в процентах для гистограммы с помощью facet_grid () - PullRequest
3 голосов
/ 19 июня 2020

У меня есть следующая строка:

p1 <- ggplot(mtcars, aes(x= cyl)) + geom_bar(aes(fill = vs), stat = "count") + geom_text(aes(label = scales::percent(..prop..), ymax= ..prop..), stat = "count", vjust = -0.5) +  theme_classic() + ylab("Count") + facet_grid(vs ~ .) + ylim(0, 15)

, которая дает этот график. Это график, на котором я хочу сохранить количество целых чисел на оси Y, но я хочу, чтобы проценты отображались над каждой полосой.

enter image description here

I хотел бы отредактировать количество десятичных знаков на каждой полосе. Однако при использовании строки ниже:

p2 <- ggplot(mtcars, aes(x= cyl)) + geom_bar(aes(fill = vs), stat = "count") + geom_text(aes(label = scales::percent(round((..count..)/sum(..count..),1)), ymax= ((..count..)/sum(..count..))), stat="count",  vjust = -.25) + theme_classic() + ylab("Count") + facet_grid(vs ~ .) + ylim(0, 15)

проценты теперь отключены (см. Ниже), отображая проценты для всего графика, а не отдельных граней. Есть ли способ округлить проценты без ущерба для чисел?

enter image description here

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Вы можете использовать accuracy = 2 в функции scales::percent:

p1 <- ggplot(mtcars, aes(x= cyl)) + geom_bar(aes(fill = vs), stat = "count") +
  geom_text(aes(label = scales::percent(..prop.., accuracy = 2), ymax= ..prop..), stat = "count", vjust = -0.5) + 
  theme_classic() + ylab("Count") + facet_grid(vs ~ .) + ylim(0, 15)
p1
1 голос
/ 19 июня 2020

Есть вариант точности в шкалах :: проценты:

p1 <- ggplot(mtcars, aes(x= cyl)) + 
geom_bar(aes(fill = vs), stat = "count") + 
geom_text(aes(label = scales::percent(..prop..,accuracy=2)), 
stat = "count", vjust = -0.5) +  
theme_classic() + ylab("Count") + facet_grid(vs ~ .) + ylim(0, 15)

enter image description here

...