如何绘制多列CSV文件?

Iva*_*van 13 csv charts r

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

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

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

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

Ben*_*ker 24

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

mydata <- read.csv("mydatafile.csv")
matplot(mydata[, 1], mydata[, -1], type="l")
Run Code Online (Sandbox Code Playgroud)
  • header=TRUE是默认选项read.csv(),因此您无需显式指定标题行的存在
  • mydata[, 1]选择第一列; mydata[, -1]选择第一列之外的所有
  • type="l"选择行(默认为点); 看?matplot,?plot改变线型,颜色,等等等等的详细信息...

一旦你知道它matplot是有用的,你可以搜索StackOverflow以获取其他示例,例如如何从R中的csv绘制多条线

  • 谢谢你,@ ben-bolker,你的答案非常适合解决我的问题.我希望你不要介意我接受马修的答案,因为它解决了这个问题,马修的声望点也少得多. (4认同)

Mat*_*erg 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'))
Run Code Online (Sandbox Code Playgroud)

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

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'))
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明