比例堆积的条形图

时间:2014-06-18 05:38:51

标签: r ggplot2 bar-chart

我正在尝试制作一个堆叠条形图,其中一个变量是第二个变量的比例。数据是

   snps2       ors2       orm2
1  ABCA7     0.00000000  0.4140283  
2  B1NI      0.00000000  0.3140075  
3  CD2AP     0.00000000  0.2087200
4  CD33      0.22665737  0.2266574  
5  CLU       0.12221763  0.2444353  
6  CR1       0.00000000  0.3140075  
7  EPAH1     0.22665737  0.2266574  
8  MS4A4A    0.24443527  0.2444353  
9  MS4A4E    0.07696104  0.1539221  
10 MSA6A     0.20872003  0.2087200  
11 PICALM    0.12221763  0.2444353  
12 APOE_e2   0.00000000 -1.3862944  
13 APOE_e4   0.00000000  2.6752584  

ors2的值将始终为orm2值的0%,50%或100%。
我已将其重组为长格式,以便在ggplot2中使用。

dat_m <- melt(mydata)
ggplot(dat_m, aes(snps2, value, fill = variable)) + geom_bar(stat = "identity")

这给了我以下图表:

enter image description here

然而,红色值而不是绿色值的一部分,这是我想要的,它们已被添加到彼此。

我怎样才能得到ors2在图中的orsm2比例?

谢谢

3 个答案:

答案 0 :(得分:1)

你可能想要一个躲闪的条形图而不是堆叠的条形图:

ggplot(dat_m, aes(snps2, value, fill = variable)) + 
  geom_bar(stat = "identity", position='dodge')

enter image description here

在叠加的条形图中,值总是相加。

答案 1 :(得分:1)

因为在叠加的条形图中,值总是相加,所以在绘图之前只需要减去:orm2 = orm2 - ors2

enter image description here

require(reshape2)
require(ggplot2)


mydata$orm2_adj=mydata$orm2-mydata$ors2
summary(mydata)
dat_m <- melt(mydata[,-3])

ggplot(dat_m, aes(snps2, value, fill = variable,color=variable)) +
  geom_bar(stat = "identity")+
  scale_color_manual(values=c("red","transparent"))

答案 2 :(得分:0)

否则更改您的变量,如

dat$orm2 <- dat$orm2 - dat$ors2

然后做

dat_m <- melt(mydata)
ggplot(dat_m, aes(snps2, value, fill = variable)) + geom_bar(stat = "identity")