【问题标题】:How to add a line (abline e.g.) into a plot in a loop function in R如何在 R 中的循环函数的图中添加一条线(例如 abline)
【发布时间】:2018-02-24 14:20:53
【问题描述】:

我有一个数据集,我需要在其中绘制每个变量。我为此做了一个循环,因为数据集包含 50 个变量。这是我到目前为止得到的:

invisible(lapply(colnames(Data),function(x){
plot(Data[,x],main=x,type="l", xlab= 'Week number', ylab='Amount')
}))

这会自动将我的数据集中的所有变量绘制在单独的图中。但是,我需要在所有这些图中绘制线条。这个想法是我为每个 x 添加一条平均线。因此,高度上的水平线对应于平均值 x 的值。我试图通过将 abline(h=mean(x)) 函数添加到上面的函数来做到这一点,但这不起作用。你们对如何做到这一点有任何想法吗?

【问题讨论】:

  • 对于plot 函数,我倾向于使用for 循环而不是lapply。我没有遇到像你在这里提到的for(...){; plot(...); abline(...); }; 的问题。
  • 你不是说你加了abline(h=mean(Data[,x]))吗?也可能是由于专栏中的NAs;使用mean(Data[,x], na.rm=TRUE)
  • @MrGumble 谢谢!这成功了。我认为这是由于 NA 的原因,它无法正常工作。您是否还知道我如何添加 2 行,一条高于平均值 20%,另一条低于 x 平均值 20%,仅用于数据集中的最后 5 个 x 值?

标签: r function loops plot lines


【解决方案1】:

你应该使用

abline(h=mean(Data[,x]))

不是

abline(h=mean(x)) 

因为每次 x 都是一个列名。检查使用此代码

Data<-matrix(sqrt(1:20),ncol=4)
colnames(Data)<-c(letters[1:4])
par(mfrow=c(2,2))

invisible(lapply(colnames(Data),function(x){
plot(Data[,x],main=x,type="l", xlab= 'Week number', ylab='Amount')
abline(h=mean(Data[,x]))
}))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多