我在堆叠条形图中的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"))
我该如何解决?
谢谢!
答案 0 :(得分:1)
您似乎在3个地方定义了aes
:在ggplot()
和geom_bar()
的初始geom_text()
中。
相反,请在aes
中进行一个ggplot()
定义,即让geom_bar
和geom_text
继承您在aes
中定义的ggplot()
。
例如,您在哪里:
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")
我将根据您的输出格式/用途来调整标签文本的大小。