R堆积条形图不增加条形中的值

R stacked bar plot without increment the values in the bars

我从 R 开始,尝试绘制堆积条形图,我的数据是这样的:

   Groups AxisX AxisY
1       B     1 35476
2       B     2 31394
3       B     3 39305
4       B     4 33845
5       B     5 30295
6       B     6 25590
7       B     7 32197
8       B     8 27901
9       B     9 35936
10      B    10 31341
11      A     1 46468
12      A     2 42557
13      A     3 55158
14      A     4 49182
15      A     5 44825
16      A     6 39813
17      A     7 44900
18      A     8 40964
19      A     9 47823
20      A    10 44373

它是用这个命令创建的:

dfx <- data.frame(Groups=rep(c("B", "A"), each=10),
                AxisX=rep(c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"),2),
                AxisY=c(35476,31394,39305,33845,30295,25590,32197,27901,35936,31341,46468,42557,55158,49182,44825,39813,44900,40964,47823,44373))

我想使用堆积条形图绘制此数据,但这是按条形递增值,例如:

B     1 35476
A     1 46468

我想要:

46468 |
35476 |
0     |

而不是这样:

81944 |
35476 |
0     |

我正在使用此代码绘制图表:

p <- ggplot(data=dfx, aes(x=AxisX, y=AxisY, fill=Groups)) +
geom_bar(stat="identity")

如果我添加 position=position_dodge() 可以,但我希望图形重叠。

我需要做什么改变?或者我需要用其他方法让图形变成我想要的样子?

您需要修改您的数据来绘制您想要的图片。如果您只需要组之间的差异,那么先计算它们。

require("dplyr")

ggplot(data=dfx %>% group_by(AxisX) %>% arrange(AxisY) %>% 
         mutate(AxisY_2 = c(AxisY[1], diff(AxisY))),
       aes(x=AxisX, y=AxisY_2, fill=Groups)) +
  geom_bar(stat="identity")