我正在尝试制作一个堆叠条形图,其中一个变量是第二个变量的比例。数据是
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")
这给了我以下图表:
然而,红色值而不是绿色值的一部分,这是我想要的,它们已被添加到彼此。
我怎样才能得到ors2在图中的orsm2比例?
谢谢
答案 0 :(得分:1)
你可能想要一个躲闪的条形图而不是堆叠的条形图:
ggplot(dat_m, aes(snps2, value, fill = variable)) +
geom_bar(stat = "identity", position='dodge')
在叠加的条形图中,值总是相加。
答案 1 :(得分:1)
因为在叠加的条形图中,值总是相加,所以在绘图之前只需要减去:orm2 = orm2 - ors2
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")