![](/img/trans.png)
[英]Adding multiple lines of means for two separate groups using ggplot / stat_summary
[英]ggplot: lineplot of means of two groups
我已經在堆棧中搜索並搜索了我的問題的答案; 這一個接近我的問題,但我沒有成功修改代碼來修復我的圖表。
我有數據,以長格式重塑,看起來像這樣:
ID Var1 GenePosition ContinuousOutcomeVar
1 control X20068492 0.092813611
2 control X20068492 0.001746708
3 case X20068492 0.069251157
4 case X20068492 0.003639304
每個ID
每個位置都有一個ContinuousOutcomeVar
值,共有 86 個位置和 10 個 ID。 我想繪制一個折線圖,位置在 x 軸上,連續結果變量在 y 軸上。 我想要兩組:病例組和對照組,所以每個位置應該有兩個點:一個是病例的平均值,一個是對照的平均值。 然后我想要一條連接案例的線,以及一條連接控件的線。 我知道這很容易,但我是 R 的新手 - 我已經研究了 8 個小時,但我不能完全正確。 以下是我所擁有的; 我真的很感激一些見解。 如果這存在於堆棧中的某個地方,我真的很抱歉……老實說,我翻遍了所有代碼並嘗試修改了很多代碼,但仍然沒有做對。
我的代碼:此代碼在每個位置繪制所有 ID 的所有值,並將它們連接到兩組。 它在每個位置的所有 10 個值的平均值處給我一個黑點(我認為):
lineplot <- ggplot(data=seq.long, aes(x=Position, y=PMethyl,
group=CACO, colour=CACO)) +
stat_summary (fun.y=mean, geom="point", aes(group=1), color="black") +
geom_line() + geom_point()
我無法讓 R 不繪制所有 10 個點; 每個位置只有兩種方法(每個病例/對照組一個),病例和對照的值各由一條跨 x 軸的線連接。
首先,調整您的原始樣本數據以包含多個唯一的GenePosition
。
dput(seq.long)
structure(list(ID = 1:8, Var1 = structure(c(2L, 2L, 1L, 1L, 2L,
2L, 1L, 1L), .Label = c("case", "control"), class = "factor"),
GenePosition = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L
), .Label = c("X20068492", "X20068493"), class = "factor"),
ContinuousOutcomeVar = c(0.092813611, 0.001746708, 0.069251157,
0.003639304, 0.112813611, 0.002746708, 0.089251157, 0.004639304
)), .Names = c("ID", "Var1", "GenePosition", "ContinuousOutcomeVar"
), class = "data.frame", row.names = c(NA, -8L))
如果您只想為每個GenePosition
和Var1
組合表示一個值,那么在繪圖之前計算平均值會更容易。 這可以通過庫plyr
函數ddply()
來plyr
。
library(plyr)
seq.long.sum<-ddply(seq.long,.(Var1,GenePosition),
summarize, value = mean(ContinuousOutcomeVar))
seq.long.sum
Var1 GenePosition value
1 case X20068492 0.03644523
2 case X20068493 0.04694523
3 control X20068492 0.04728016
4 control X20068493 0.05778016
現在有了這個新的數據框,你只需要給出x
和y
值。 在colour=
和group=
應該使用Var1
,以確保每個組具有不同的顏色並且線是連接的。
ggplot(seq.long.sum,aes(x=GenePosition,y=value,colour=Var1,group=Var1))+
geom_point()+geom_line()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.