如何在同一个R散点图中绘制多个系列?

时间:2011-05-26 11:12:40

标签: r charts

我经常使用Excel中的散点图将一个时间序列可视化为另一个时间序列,但由于最近的数据更具有相关性,因此我在最近的时间段内使用不同的高光:

enter image description here

在这种情况下,月份,周和今天的图表只是同一时间序列的不同(更近期)切片,因此在此图表中基本上有四个叠加图。我怎么能在R中做同样的事情?我到目前为止:

enter image description here

但我想复制excel中的内容。如何在R中的同一图表中添加新图?

或者我甚至可以进一步使用R图中的col属性来使颜色持续增加到今天的值,从而避免这些谨慎的步骤?我该怎么做?

2 个答案:

答案 0 :(得分:7)

您可以使用较低级别的绘图功能points()将点添加到现有的绘图中。它的工作方式与通过plot()创建散点图的方式完全相同,只是它为当前使用的绘图添加了点。

例如:

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

编辑:

执行颜色的一种方法是使用Chi建议的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

答案 1 :(得分:5)

以下是如何使用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