首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >position_stack与叠加条形图中百分比标签的反演

position_stack与叠加条形图中百分比标签的反演
EN

Stack Overflow用户
提问于 2018-10-12 22:00:36
回答 1查看 298关注 0票数 2

我在一个堆叠的条形图中的position_stack函数有一个问题。从下面的图片中可以看到,在某些情况下,我对百分比值标签进行了倒置。

以下是我的数据:

代码语言:javascript
复制
id  val          time   var     label
1   19.00499584   EX    diet1   19.00
2   -24.35452794  EX    diet1   -24.35
3   -18.58325667  EX    diet1   -18.58
4   -15.50364964  EX    diet1   -15.50
5   27.60230706   EX    diet1   27.60
6   1.150442478   EX    diet1   1.15
7   -5.930055753  EX    diet1   -5.93
1   -1.403798514  EX+D  diet1   -1.40
2   12.21098266   EX+D  diet1   12.21
3   36.79131484   EX+D  diet1   36.79
4   10.17820425   EX+D  diet1   10.18
5   -10.62221361  EX+D  diet1   -10.62
6   8.333333333   EX+D  diet1   8.33
7   1.658653846   EX+D  diet1   1.66
1   4.391357808   EX    diet2   4.39
2   12.01472557   EX    diet2   12.01
3   -2.628676471  EX    diet2   -2.63
4   8.408871745   EX    diet2   8.41
5   9.160170092   EX    diet2   9.16
6   7.447067413   EX    diet2   7.45
7   1.706231454   EX    diet2   1.71
1   5.962616822   EX+D  diet2   5.96
2   54.31421446   EX+D  diet2   54.31
3   -21.25925926  EX+D  diet2   -21.26
4   20.72234763   EX+D  diet2   20.72
5   9.864004132   EX+D  diet2   9.86
6   12.9842615    EX+D  diet2   12.98
7   22.89185905   EX+D  diet2   22.89

这是我的代码:

代码语言:javascript
复制
bx <- read.csv("C:\\Users\\...f1.csv", sep=";")
bx$time<-factor(bx$time, levels=c("EX", "EX+D"))
bx$id<-factor(bx$id)
bx$var<-factor(bx$var, levels=c("diet1", "diet2"))


vv<-ggplot(bx, aes(id, val)) + geom_bar(stat = "identity", aes(fill = time)) + geom_hline(yintercept=0)+ facet_grid(var~.)+ coord_flip()+geom_text(aes(label = label), position = position_stack(vjust = 0.5),size = 4, color="black")

vv+ scale_fill_grey(start=0.8, end=0.5)+labs(x="Obs", y="Percentage difference", fill="Time") + theme_bw() + theme( panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"),panel.spacing = unit(0, "lines"),  
     strip.text.x = element_text(size=12, angle=45), 
     strip.background = element_rect(fill="white"))

我怎么才能修好它?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-12 23:43:20

您似乎在三个地方定义了aes:在初始的ggplot()中,在geom_bar()中,在geom_text()中。

相反,在ggplot()中执行一个ggplot()定义,即让geom_bargeom_text继承在ggplot()中定义的aes

例如,您有:

代码语言:javascript
复制
vv<-ggplot(bx, aes(id, val)) + 
  geom_bar(stat = "identity", aes(fill = time)) + 
  geom_hline(yintercept=0)+ facet_grid(var~.)+
  coord_flip() +
  geom_text(aes(label = label), 
            position = position_stack(vjust = 0.5),
            size = 4, color="black")

相反,将其改为:

代码语言:javascript
复制
vv<-ggplot(bx, aes(id, val, fill=time, label =label)) + 
  geom_bar(stat = "identity") + 
  geom_hline(yintercept=0)+ facet_grid(var~.)+ 
  coord_flip() + 
  geom_text(position = position_stack(vjust = 0.5),
            size = 4, color="black")

这将导致您想要的标签位置:

我将让您来调整标签文本的大小,以适应您的输出格式/使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52787501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档