如何解决用ggplot2标记饼图问题并更改grom文本以进行标记
我有以下问题:我无法使用R中的ggplot2在饼图上正确添加标签。
这是代码:
establecimientos <- c("A","A","D","F","E","G","Y","B","B")
pestab <- data.frame(establecimientos) %>%
group_by(establecimientos) %>%
mutate(cnt = n(),pct = percent(cnt / nrow(.),accuracy = 1)) %>%
unique %>% ungroup %>%
mutate(place = cumsum(cnt) - cnt/2) %>%
ggplot(data = .,aes(x = factor(1),weight = cnt,fill = factor(establecimientos))) +
geom_bar(position = "stack") +
scale_y_continuous(breaks = seq(0,length(establecimientos),length(establecimientos)/4),labels = c("0","25%","50%","75%","100%")) +
coord_polar(theta='y') +
geom_text(aes(x = 1.3,y = place,label = pct)) +
theme(axis.text.y = element_blank(),axis.title.y = element_blank(),axis.ticks.y = element_blank(),axis.title.x = element_blank()) +
labs(fill = "Establecimientos")
pestab
这是乘积= s
此外,我想从geom_text更改为geom_label,但我不知道该怎么做。
感谢您的帮助。
解决方法
我建议采用下一种方法:
library(tidyverse)
#Data 1
establecimientos <- c("A","A","D","F","E","G","Y","B","B")
#Data 2
df1 <- pestab <- data.frame(establecimientos) %>%
group_by(establecimientos) %>%
mutate(cnt = n(),pct = percent(cnt / nrow(.),accuracy = 1)) %>%
unique %>% ungroup %>%
mutate(place = cumsum(cnt) - cnt/2)
#Plot
ggplot(df1,aes(x = "",y = cnt,fill = establecimientos)) +
geom_bar(width = 1,stat = "identity",color = "white") +
scale_y_continuous(breaks = seq(0,length(establecimientos),length(establecimientos)/4),labels = c("0","25%","50%","75%","100%"))+
coord_polar("y",start = 0) +
geom_text(
aes(y = cnt,label = pct),color = "black",position = position_stack(vjust = 0.5)
)+
theme(axis.text.y = element_blank(),axis.title.y = element_blank(),axis.ticks.y = element_blank(),axis.title.x = element_blank()) +
labs(fill = "Establecimientos")
输出:
如果您想使用geom_label()
,则可以使用下一个代码:
#Plot 2
ggplot(df1,start = 0) +
geom_label(
aes(y = cnt,position = position_stack(vjust = 0.5),show.legend = F
)+
theme(axis.text.y = element_blank(),axis.title.x = element_blank()) +
labs(fill = "Establecimientos")
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。