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