Как построить несколько серий на одном графике рассеяния R? - PullRequest
4 голосов
/ 26 мая 2011

Я часто визуализирую один временной ряд против другого, используя диаграммы рассеяния в Excel, но, поскольку последние данные более релевантны, я использую различные блики для более поздних периодов времени:

enter image description here

Вв этом случае графики месяца, недели и сегодняшнего дня - это просто разные (более свежие) срезы одного и того же временного ряда, поэтому в основном на этом графике есть четыре наложенных графика.Как я могу сделать то же самое в R?Я дошел до сих пор:

enter image description here

Но я хотел бы повторить то, что у меня есть в Excel.Как добавить новые графики на тот же график в R?

Или, возможно, я мог бы даже пойти дальше и использовать атрибут col на графике R, чтобы получить непрерывное увеличение цвета до сегодняшнего значения, таким образомизбегать этих сдержанных шагов?Как бы я это сделал?

Ответы [ 2 ]

7 голосов
/ 26 мая 2011

Вы можете использовать функцию построения нижнего уровня points(), чтобы добавить точки к уже существующему графику.Он работает точно так же, как вы создаете точечный график с помощью plot(), за исключением того, что он добавляет точки к текущему графику.

Например:

plot(1:10)
points(10:1,col="red")

Редактировать:

Один из способов сделать цвета - использовать rgb(), как предложил Чи.Мне нравится создавать фиктивную переменную со значениями от 0 до 1 и использовать ее в качестве скаляра для цветов.Например:

x <- rnorm(100)
y <- 0.5*x + rnorm(100)
z <- 0.5*y + rnorm(100)

dum <- (z - min(z)) / (max(z) - min(z))

plot(x,y,col=rgb(1-dum*0.4,1-dum*0.8,1-dum*0.8),pch=16)

Это делает точки более красными, поскольку они имеют более высокое значение z.Конечно, вы можете изменить min(z) и max(z) на границы интересующей вас шкалы.

enter image description here

5 голосов
/ 26 мая 2011

Вот скелетный пример того, как это сделать, используя ggplot:

library(ggplot2)

day <- 1:100
dat <- data.frame(
  day=day,
  x = day+(1+rnorm(100, 0, 10)),
  y = 5 + day+(1+rnorm(100, 0, 10)),
  when = cut(day, 5)
)

ggplot(dat, aes(x=x, y=y, colour=when)) + geom_point()

enter image description here

И для гладких цветов:

ggplot(dat, aes(x=x, y=y, colour=day)) + geom_point() + 
    scale_colour_gradient(low="pink", high="red")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...