эстетическое отображение в ggplot внутри цикла

Я пытался построить несколько непрерывных переменных временных рядов на одном графике, используя ggplot2. Поскольку было много переменных, и я попытался использовать нормальное эстетическое отображение внутри цикла for, как,

p1<-ggplot(df, aes(x=timVar))
ind<-c(2,4,5,6,8,9,10,12,13,15,17) # Index of the series that I wanted to plot
for(i in ind){
    p1<-p1+geom_line(aes(df[,i]))
}
print(p1)

Поскольку это дало мне только график последней серии, я поискал в Google какое-то решение и, наконец, нашел то, которое предлагало мне использовать функцию aes_string (). Я перестраиваю код как,

p1<-ggplot(df, aes(x=timVar))
ind<-c(2,4,5,6,8,9,10,12,13,15,17) # Index of the series that I wanted to plot
for(i in ind){
    p1<-p1+geom_line(aes_string(names(df)[i]))
}
print(p1)

Это дало мне все необходимые строки. Однако, когда я попытался получить отдельный цвет для каждой переменной, я не смог получить дискретный цвет. Я использовал следующий код,

p1<-p1+geom_line(aes_string(names(df)[i], col=names(df)[i]))

Есть ли способ использовать aes_string и aes вместе внутри цикла или есть ли способ сгенерировать дискретные значения цвета с меткой в ​​качестве имен переменных.


person TheRimalaya    schedule 18.09.2014    source источник
comment
Я не уверен, почему вы пытаетесь это сделать. Не могли бы вы предоставить свой df?   -  person Paulo E. Cardoso    schedule 19.09.2014
comment
Есть ли причина, по которой вы не хотите преобразовывать свой набор данных в длинный формат? См. Пример в этом ответе.   -  person aosmith    schedule 19.09.2014


Ответы (1)


Я использую функцию melt пакета dplyr. Это решило всю мою проблему выше. Спасибо за все ваши комментарии.

person TheRimalaya    schedule 17.11.2014