2016-04-22 52 views
0

我可以根据一列日期和第二列值创建R中的黄土线。加载数据集后,我可以看到以下一列数据:r中的多个黄土线

scatter.smooth(x=1:length(goals$Value), y=goals$Value) 

但是,如何为其他列添加多个黄土线?在一张图中绘制所有黄土线的代码是什么?再说了,其他各个列被命名为值2,值3,值4等

回答

1

你会使用lines功能:

# create test data 
set.seed(123) 
df <- data.frame("days"=1:25, "v1"=rnorm(25), "v2"=(rnorm(25)+0.1)) 
# first plot 
scatter.smooth(x=df$days, y=df$v1) 
# add plot of second lowess line 
lines(loess.smooth(x=df$days, y=df$v2)) 

增添色彩的台词:

scatter.smooth(x=df$days, y=df$v1, lpars=list(col="red")) 
lines(loess.smooth(x=df$days, y=df$v2), col="green") 
+1

'scatter.smooth'调用'loess.smooth',它使用'simpleLoess'函数生成顺畅。为了确保其他行以相同的方式创建,最好是使用'lines(loess.smooth(...))'。 – eipi10

+1

感谢您的提示,@ eipi10。我不知道这一点。我将进行编辑。 – lmo

+0

这可以很好地工作,正如下面的其他答案一样。有没有办法让每一行都有不同的颜色?如果是这样,R是否将颜色识别为单词,如“红色”,“绿色”等 - 而不是十六进制代码? – user2020088

0

如果您避风港” t还没有考虑它,包ggplot2使这样的图形问题更容易处理,并给出更好的图表:

library(ggplot2) 
library(tidyr) 

set.seed(123) 
df <- data.frame("days"=1:25, "v1"=rnorm(25), "v2"=(rnorm(25)+0.1)) 

#Reshape data from wide to long 
df2 <- gather(df,var,val,c(v1,v2)) 

ggplot(df2,aes(x = days, y = val)) + 
    geom_point() + 
    geom_smooth(aes(colour = var),se = F) 

如果你不想重塑数据,您可以添加单独的行这样的:

ggplot(df,aes(x = days, y = v1)) + 
    geom_point() + #Add scatter plot 
    geom_smooth(aes(colour = 'v1'),se = F) + #Add loess 1 
    geom_smooth(aes(y = v2,colour = 'v2'),se = F) + #Add loess 2... and so on 
    scale_colour_discrete(name = 'Line', 
         breaks = c('v1','v2'), 
         labels = c('variable 1','variable 2')) #Define legend 
+0

我不熟悉R的基础。我将安装ggp​​lot2库。我的桌面上有.csv文件。我已将工作目录更改为桌面。那么上面哪段代码加载了.csv? set.seed(123)是什么意思?如果天数最多为24个月,是否将其更改为'(“days”= 1:24,'?是否应将其他列(如v3,v4,v5等)添加到数据框行?行需要复制任何额外的列,如geom_smooth(aes(y = v3),se = F) – user2020088

+0

您可以阅读您的csv使用'read.csv'; Imo和我用一些示例数据来演示代码因为你没有提供实际数据的样本来运行代码,如果你直接读取你的csv,你不需要单独的'data.frame'这行代码。最后,最后一行是需要被复制来添加更多的黄土线 – shreyasgm

+0

这是完美的作品有没有一种方法让每一行的颜色不同? – user2020088