我对 R 很陌生,所以请原谅我的问题可能很愚蠢。
我有一个多列 CSV(纯逗号分隔,无引号)文件,其中第一行是标题,第一列是连续整数索引,其他 17 列是函数的浮点值。
任务是在同一张图表上绘制所有 17 条线(具有相同的轴)。
听起来很简单,但实际上并不是很明显。
可能最紧凑、仅基于 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
您可以使用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
这里添加了参数,以标记系列。