簡體   English   中英

ggplot:兩組均值的線圖

[英]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))

如果您只想為每個GenePositionVar1組合表示一個值,那么在繪圖之前計算平均值會更容易。 這可以通過庫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

現在有了這個新的數據框,你只需要給出xy值。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM