R堆积条形图而不增加条形

时间:2015-10-07 10:00:04

标签: r stacked-chart

我从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))

我想使用堆积条形图来绘制此数据的图形,但这会将值增加为bar,例如:

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()即可,但我希望图片重叠。

我需要做哪些改变?或者我需要使用其他方法让图形符合我的要求?

1 个答案:

答案 0 :(得分:0)

您需要修改数据以绘制所需的图片。如果您只需要组之间的差异,请先计算它们。

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")

enter image description here