我是R的新手,请原谅我提出一个可能很愚蠢的问题。
我有一个多列CSV(以逗号分隔,没有引号)文件,其中第一行是标题,第一列是连续的整数索引,其他17列是函数的浮点值。
任务是在同一个图表上绘制所有17条线(使用相同的轴)。
听起来很简单但实际上并不是很明显。
答案 0 :(得分:23)
可能是最紧凑,仅基于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
答案 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
参数来标记系列。