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

以下是我的数据:
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这是我的代码:
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"))我怎么才能修好它?
谢谢!
发布于 2018-10-12 23:43:20
您似乎在三个地方定义了aes:在初始的ggplot()中,在geom_bar()中,在geom_text()中。
相反,在ggplot()中执行一个ggplot()定义,即让geom_bar和geom_text继承在ggplot()中定义的aes。
例如,您有:
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<-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")这将导致您想要的标签位置:

我将让您来调整标签文本的大小,以适应您的输出格式/使用。
https://stackoverflow.com/questions/52787501
复制相似问题