ggplot的饼图geom_text()标签隐藏了由geom_bar()制作的饼图
发布时间:2020-12-14 23:25:46 所属栏目:资源 来源:网络整理
导读:我使用聚合(,FUN = sum)函数构造了以下数据: structure(list(Group.1 = structure(c(1L,2L,3L,1L,3L),.Label = c("Black or African American","White Alone","White Alone LR"),class = "factor"),Group.2 = structure(c(1L,.Label = c("bus","mixed","rai
我使用聚合(,FUN = sum)函数构造了以下数据:
structure(list(Group.1 = structure(c(1L,2L,3L,1L,3L),.Label = c("Black or African American","White Alone","White Alone LR"),class = "factor"),Group.2 = structure(c(1L,.Label = c("bus","mixed","rail" ),x = c(75143.5182835844,198737.537113379,46973.6469041183,46199.2335265697,128026.568239224,28933.3028730992,75876.5845180076,495166.957025367,5909.04640985574),pos = c(37571.7591417922,99368.7685566897,23486.8234520592,98243.1350468693,262750.821232991,61440.2983406679,159281.044069158,574347.583865287,78861.4729821454 ),labe = c(" 75,144","198,738"," 46,974",199","128,027"," 28,933"," 75,877","495,167"," 5,909")),class = c("tbl_df","tbl","data.frame"),.Names = c("Group.1","Group.2","x","pos","labe"),row.names = c(NA,-9L)) 我得到了一个很好的代码来制作饼图here和here,这导致了这个: modesplit <- ggplot(data = sums) + geom_bar( aes(factor(1),y=x,fill=Group.2),stat="identity",position="fill") + scale_fill_discrete(guide=guide_legend(title="Mode")) + coord_polar(theta="y") + facet_grid(.~Group.1,labeller = label_value) + scale_x_discrete(name=" ",breaks = NULL) + scale_y_continuous(name=" ",breaks = NULL) plot(modesplit) 但是,当我尝试添加标签时: modesplit <- ggplot(data = sums) + geom_bar( aes(factor(1),position="fill") + geom_text(aes(,y=pos,label = labe),size =5) + scale_fill_discrete(guide=guide_legend(title="Mode")) + coord_polar(theta="y") + facet_grid(.~Group.1,labeller = label_value) + scale_x_discrete(name=" ",breaks = NULL) + plot(modesplit) 饼图的“馅饼”消失了: 我试过了: >移除秤 解决方法
这是一个规模问题.注释掉coord_polar和你的scale_y_continuous,然后使用和不使用geom_text运行代码. geom_bar中的position =“fill”使得加起来为1,而你的pos值则为数万.
这是一个解决方案(编辑所以它现在很好地将标签放在中间) library(dplyr) sums2 = sums %>% group_by(Group.1) %>% mutate(x_scaled = x / sum(x),pos_scaled = pos / cumsum(x_scaled) - x_scaled / 2) modesplit <- ggplot(data = sums2,aes(x = factor(1))) + geom_bar( aes(y=x_scaled,position="stack") + scale_fill_discrete(guide=guide_legend(title="Mode")) + coord_polar(theta="y") + geom_text(aes(y = pos_scaled,size =5) + facet_grid(. ~ Group.1,breaks = NULL) plot(modesplit) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |