gpt4 book ai didi

r - ggplot : lineplot of means of two groups

转载 作者:行者123 更新时间:2023-12-04 05:08:32 25 4
gpt4 key购买 nike

我已经在堆栈中搜索并搜索了我的问题的答案; this one接近我的问题,但我未能成功修改代码以修复我的图表。

我有数据,以长格式重新整形,如下所示:

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组合,那么在绘图之前计算平均值会更容易。这可以通过函数 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值(value)观。 Var1应在 colour= 中使用和 group=以确保每个组具有不同的颜色并且线是连接的。
ggplot(seq.long.sum,aes(x=GenePosition,y=value,colour=Var1,group=Var1))+
geom_point()+geom_line()

enter image description here

关于r - ggplot : lineplot of means of two groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com