如何绘制多列CSV文件?

时间:2012-12-21 14:26:17

标签: r csv charts

我是R的新手,请原谅我提出一个可能很愚蠢的问题。

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

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

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

2 个答案:

答案 0 :(得分:23)

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

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

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

答案 1 :(得分:3)

您可以使用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'))

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

enter image description here