Как редактировать метки кольцевой диаграммы, используя ggplot2 of R? - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь создать кольцевую диаграмму, используя следующие коды -

library (ggplot2)
data = data.frame (
 category = c("No/Minimal", "Mild", "Moderate", "Moderately Severe", "Severe"),
 count = c(27,21,179,67,32))

data$fraction = data$count/sum(data$count)
data$ymax = cumsum(data$fraction)
data$ymin = c(0, head(data$ymax, n=-1))

data$category = factor (data$category, levels = c("No/Minimal", "Mild", "Moderate", "Moderately Severe", "Severe"))

p = ggplot(data, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=category)) +
 geom_rect() +
 coord_polar(theta="y") +
 xlim(c(2, 4))
p

dep<-p + scale_fill_brewer("Depression Level") + theme_void() +
 theme(axis.text.x=element_blank()) + theme(legend.position=c(.5, .5)) + ggtitle("") +
 theme(panel.grid=element_blank()) +
 theme(axis.text=element_blank()) +
 theme(axis.ticks=element_blank()) +
 theme(legend.title = element_text(size=14, face="bold")) +
 theme(legend.text = element_text(size = 12, face = "bold"))
dep
dep+geom_label(aes(label=paste(fraction*100,"%"),x=3.5,y=(ymin+ymax)/2),inherit.aes = TRUE, show.legend = FALSE)

Это дает мне такой вывод - enter image description here

Но я хотите представить процент, такой как 9,8%, 54,9%, 20,5%, 6,4% ...

что мне добавить или изменить здесь в этом коде?

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Измените label в последней строке на:

paste0(formatC(100*fraction, digits=1, format="f"), "%")
dep + geom_label(aes(label=paste0(formatC(100*fraction, digits=1, format="f"), "%"),x=3.5,y=(ymin+ymax)/2),
               inherit.aes = TRUE, show.legend = FALSE)

label

1 голос
/ 28 марта 2020

Как насчет использования round с 3 цифрами в вашем geom_label?

geom_label(aes(label=paste(round(fraction, digits = 3)*100,"%"),x=3.5,y=(ymin+ymax)/2),inherit.aes = TRUE, show.legend = FALSE)

Чтобы выделить жирный шрифт и увеличить, измените fontface и size:

geom_label(aes(label=paste(round(fraction, digits = 3)*100,"%"),x=3.5,y=(ymin+ymax)/2),inherit.aes = TRUE, show.legend = FALSE, 
               fontface = "bold", size = 5)
...