R 通过循环中的点绘制直线
我正试图通过一个图上的点画一条线。每个小区都是一条染色体。x轴是样本ID,y轴是一个样本和样本17之间的相关性。我所要做的就是在这些点之间画一条线性趋势线。然而,当我使用下面的abline时,我得到了下面的错误,我不知道如何纠正它。我已将abline移动到代码的正确位,但没有分辨率>R 通过循环中的点绘制直线,r,R,我正试图通过一个图上的点画一条线。每个小区都是一条染色体。x轴是样本ID,y轴是一个样本和样本17之间的相关性。我所要做的就是在这些点之间画一条线性趋势线。然而,当我使用下面的abline时,我得到了下面的错误,我不知道如何纠正它。我已将abline移动到代码的正确位,但没有分辨率> #Get the data as display it df <- read.delim("~/Desktop/SequencingScripts/Plots/blabla.txt", header=TR
#Get the data as display it
df <- read.delim("~/Desktop/SequencingScripts/Plots/blabla.txt", header=TRUE)
df[,order(names(df))]
ind = unique(as.character(df$chr))
for(jj in ind){
indic = which(df$chr == jj)
plot(i, corrie, xlim=c(0,22), ylim=c(0.7,1), pch=19, type="s", xlab="sample", ylab="r", main=jj)
for(i in 3:16) {
corrie = (cor(df[,i][indic], df[,15][indic]))
points(i,corrie)
}
abline(lm(corrie ~ i))
}
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) :
'a' and 'b' must be finite
这是一种盲目的解决问题的尝试,因为您没有给出任何示例数据。我的建议是,在开始打印之前格式化要打印的数据 在您的示例中,您希望使用for loop over
i
计算相关性。因此,您可以在这个循环中执行此操作,并将所有相关性保存在data.frame中。当您收集了进入绘图的所有数据后,您可以通过在新data.frame上调用plot
和abline
来绘制这些数据
您可以对所有染色体重复此操作(循环jj
)。您可以添加一条线,将打印保存到该循环中的单独位置
for(jj in ind){
indic <- which(df$chr == jj)
plot.df <- data.frame()
for(i in 3:16) {
corrie <- (cor(df[,i][indic], df[,15][indic]))
plot.df <- rbind(plot.df, c(i, corrie))
}
colnames(plot.df) <- c("sample", "cor")
plot(cor ~ sample, data=plot.df, xlim=c(0,22), ylim=c(0.7,1), pch=19,
type="p", xlab="sample", ylab="r", main=jj)
abline(lm(cor ~ sample, data=plot.df))
}
for(ind中的jj){
如果你包含尽可能小的可复制的示例,那就更好了。也就是说,代码行数最少,我们可以复制并粘贴它,然后它就会运行。你甚至可以自己这样发现问题。好的。只需从ind=unique(as.character(df$chr))运行即可我觉得您的代码似乎有问题。在使用它的循环之外使用了一个对象i
。请尝试将plot
调用移动到for循环中。您使用abline
调用的问题是corrie
和i
是单个值。此线性模型无法估计,因此abline
抱怨。嗨,Simon G。这里有两个for循环。所以我将绘图调用移动到for中(3:16中的I in 1),但我得到了错误:xy中的错误。coords(x,y,xlabel,ylabel,log):找不到对象“corrie”OK谢谢Simon G。当我输入示例数据时,您已将其与上面的数据进行了排序。干杯
for(jj in ind){
indic <- which(df$chr == jj)
plot.df <- data.frame()
for(i in 3:16) {
corrie <- (cor(df[,i][indic], df[,15][indic]))
plot.df <- rbind(plot.df, c(i, corrie))
}
colnames(plot.df) <- c("sample", "cor")
plot(cor ~ sample, data=plot.df, xlim=c(0,22), ylim=c(0.7,1), pch=19,
type="p", xlab="sample", ylab="r", main=jj)
abline(lm(cor ~ sample, data=plot.df))
}