rdata: рисование линий на графике для каждого подмножества данных

Я чувствую, что должен быть в состоянии выполнить это с призывом к 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 число subset звонки.

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 которые строят столбцы матриц против друг друга. Но для этого все ваши подмножества должны быть одинаковой длины, что, как я полагаю, неверно в вашем случае.

Другие вопросы по тегам