#r #ggplot2 #bar-chart
#r #ggplot2 #столбчатая диаграмма
Вопрос:
Я пытаюсь создать столбчатый график с накоплением, в котором одна переменная является долей второй переменной. Данные
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 всегда будут составлять либо 0%, либо 50%, либо 100% от значения orm2.
Я преобразовал это в длинный формат для использования в ggplot2.
dat_m <- melt(mydata)
ggplot(dat_m, aes(snps2, value, fill = variable)) geom_bar(stat = "identity")
Это дает мне следующий график:
Тем не менее, красные значения, а не были пропорцией зеленых значений, чего я и хочу, они были добавлены друг к другу.
Как я могу сделать так, чтобы ors2 был пропорцией orsm2 на графике?
Спасибо
Ответ №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:
Возможно, вам захочется иметь столбчатый график с уклоном вместо сложенного:
ggplot(dat_m, aes(snps2, value, fill = variable))
geom_bar(stat = "identity", position='dodge')
В столбчатой диаграмме с накоплением значения всегда суммируются.
Ответ №3:
В противном случае измените свою переменную следующим образом
dat$orm2 <- dat$orm2 - dat$ors2
тогда делай
dat_m <- melt(mydata)
ggplot(dat_m, aes(snps2, value, fill = variable)) geom_bar(stat = "identity")