我觉得我应该能够通过致电lines()
来完成这一项,但我有以下内容:
data <- read.csv(...)
set1 <- subset(data, level='one')
set2 <- subset(data, level='two')
set3 <- subset(data, level='three')
plot(x=data$year, y=data$output)
lines(x=set1$year, y=set1$output, col='red')
lines(x=set2$year, y=set2$output, col='blue')
lines(x=set3$year, y=set3$output, col='green')
这感觉就像一个真正的101应用程序plot
和lines
而我只是想让它更有效率,特别是考虑到我最终会得到N个{{1} 1}}来电。
答案 0 :(得分:1)
您可以使用排序循环
colors <- c('red', 'blue', 'green')
levels <- c('one', 'two', 'three')
# make sure you made a new plot up to this point and that its limits are set correctly
for (i in 1:length(colors)) {
d <- subset(data, level=levels[i])
lines(x=d$year, y=d$output, col=colors[i])
)
这可以很好地扩展到大N.你也可以用例如颜色生成颜色列表。 colors <- rainbow(N)
。
如果你想在没有循环的情况下这样做,你可以查看matplot
和matlines
,它们会相互映射矩阵列。但是对于这一点,你所有的子集都必须具有相同的长度,我认为在你的情况下这是不正确的。