Линейный график, который меняет цвет с течением «времени»

#r

#r

Вопрос:

У меня есть фрейм данных, который содержит координаты x и y для случайного блуждания, которое перемещается дискретными шагами (1 шаг вверх, вниз, влево или вправо). Я хотел бы построить путь — точки, соединенные линией. Конечно, это просто. Сложность в том, что путь пересекает сам себя и становится трудным для интерпретации. Я добавляю дрожание к точкам, чтобы избежать перерисовки, но это не помогает различать порядок прохождения.

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

Мое случайное блуждание хранится в своем собственном классе, и я пишу plot для него конкретный метод, поэтому, если у вас есть предложения о том, как я могу это сделать plot , это было бы здорово. Спасибо!

Ответ №1:

Это довольно легко сделать в ggplot2 :

 so <- data.frame(x = 1:10,y = 1:10,col = 1:10)
ggplot(so,aes(x = x, y = y))   
    geom_line(aes(group = 1,colour = col))
 

введите описание изображения здесь

Ответ №2:

Если вы предпочитаете не использовать ggplot, тогда ?segments он будет делать то, что вы хотите. — Я предполагаю, что x и y являются функциями времени, как подразумевается в вашем примере.

Комментарии:

1. Может быть, только я, но ggplot не работал для меня, поскольку, казалось, сначала сортировал данные (или, по крайней мере, так появился результат). Он отлично работает для чего-то вроде одномерного случайного блуждания по времени, но не для 2d, как спросил Чарли, где время представлено цветом.

Ответ №3:

Если вы используете ggplot, вы можете настроить цветовую эстетику:

 library(ggplot2)
walk <-cumsum(rnorm(n=100, mean=0)) 
dat <- data.frame(x = seq_len(length(walk)), y = walk)
ggplot(dat, aes(x,y, colour = x))   geom_line()