我经常使用Excel中的散点图将一个时间序列可视化为另一个时间序列,但由于最近的数据更具有相关性,因此我在最近的时间段内使用不同的高光:
在这种情况下,月份,周和今天的图表只是同一时间序列的不同(更近期)切片,因此在此图表中基本上有四个叠加图。我怎么能在R中做同样的事情?我到目前为止:
但我想复制excel中的内容。如何在R中的同一图表中添加新图?
或者我甚至可以进一步使用R图中的col属性来使颜色持续增加到今天的值,从而避免这些谨慎的步骤?我该怎么做?
答案 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)
更改为您感兴趣的比例范围。
答案 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()
对于平滑的颜色:
ggplot(dat, aes(x=x, y=y, colour=day)) + geom_point() +
scale_colour_gradient(low="pink", high="red")