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

Tho*_*wne 4 charts r

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

在此输入图像描述

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

在此输入图像描述

但我想复制我在excel中所拥有的东西.如何在R中的同一图表中添加新图?

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

Sac*_*amp 7

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

例如:

plot(1:10)
points(10:1,col="red")
Run Code Online (Sandbox Code Playgroud)

编辑:

一种做颜色的方法是使用rgb()Chi建议.我喜欢创建一个值为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)
Run Code Online (Sandbox Code Playgroud)

这使得点越红,因为它们具有更高的值z.当然,您可以更改min(z)max(z)进入您感兴趣的比例范围.

在此输入图像描述


And*_*rie 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

并且颜色平滑:

ggplot(dat, aes(x=x, y=y, colour=day)) + geom_point() + 
    scale_colour_gradient(low="pink", high="red")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 学习ggplot的另一个好处是你可以学习所有类型的绘图(散点图,条形图,线条等)的一种语法.基础图形使用各种功能名称(情节,组织,条形图,其他?),所有这些都有自己的怪癖和期望.另一方面,ggplot2将始终以`ggplot()`或`qplot()`开头,输入数据(或多或少)每次都将采用相同的格式.ggplot处理图例和缩放的方式也很方便.最后,ggplot网站非常方便,但我建议拿起这本书以便更深入地理解.</ end soapbox> (2认同)