15

我对 R 很陌生,所以请原谅我的问题可能很愚蠢。

我有一个多列 CSV(纯逗号分隔,无引号)文件,其中第一行是标题,第一列是连续整数索引,其他 17 列是函数的浮点值。

任务是在同一张图表上绘制所有 17 条线(具有相同的轴)。

听起来很简单,但实际上并不是很明显。

4

2 回答 2

26

可能最紧凑、仅基于 R 的解决方案是

mydata <- read.csv("mydatafile.csv")
matplot(mydata[, 1], mydata[, -1], type="l")
  • header=TRUE是 的默认选项read.csv(),因此您无需明确指定标题行的存在
  • mydata[, 1]选择第一列;mydata[, -1]选择第一列之外的所有列
  • type="l"选择线(默认为点);?matplot有关更改线型、颜色等的详细信息,请参阅?plot等等...

一旦您知道这matplot很有用,您可以在 StackOverflow 中搜索其他示例,例如How to draw multiple Lines from csv in R

于 2012-12-21T14:56:12.457 回答
6

您可以使用read.csv将数据作为 data.frame 输入。然后你有很多绘图的选择。我更喜欢lattice大多数调查工作。

两个在格子里。在这里,我正在为图表创建随机数据。

library(lattice)
d <- data.frame(index=1:20, x=rnorm(20), y=rnorm(20))

> head(d, n=3)
  index         x          y
1     1 -1.065591  0.2422635
2     2 -1.563782 -1.4250984
3     3  1.156537  0.3659411

xyplot(x+y~index, data=d, type='l', auto.key=list(space='right'))

您可以从列的名称生成公式。我通常不会在提示符下执行此操作,而是在代码中使用此类结构:

f <- paste(paste(names(d[,-1,drop=FALSE]), collapse="+"),
           names(d[,1,drop=FALSE]),
           sep=" ~ ")

xyplot(as.formula(f), data=d, type='l', auto.key=list(space='right'))

正如本的回答,type='l'指定行。默认type='p'为点。我在auto.key这里添加了参数,以标记系列。

在此处输入图像描述

于 2012-12-21T14:43:58.140 回答