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

如何在同一个R散点图中绘制多个系列?,r,charts,R,Charts,我经常使用Excel中的散点图将一个时间序列与另一个时间序列进行对比,但由于最近的数据更具相关性,因此我对最近的时间段使用不同的突出显示: 在这种情况下,月、周和今天的曲线图只是同一时间序列的不同(最近的)部分,因此在这个图表中基本上有四个叠加曲线图。我怎样才能在R中做同样的事情?到目前为止,我已经做到: 但我想复制excel中的内容。如何在R中向同一图表添加新绘图 或者,我甚至可以更进一步,在R图中使用col属性,使颜色持续增加到今天的值,从而避免这些谨慎的步骤?如何操作?您可以使用较低级

我经常使用Excel中的散点图将一个时间序列与另一个时间序列进行对比,但由于最近的数据更具相关性,因此我对最近的时间段使用不同的突出显示:

在这种情况下,月、周和今天的曲线图只是同一时间序列的不同(最近的)部分,因此在这个图表中基本上有四个叠加曲线图。我怎样才能在R中做同样的事情?到目前为止,我已经做到:

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


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

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

例如:

plot(1:10)
points(10:1,col="red")
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)
编辑: 按照Chi的建议,使用
rgb()
是制作颜色的一种方法。我喜欢创建一个值介于0和1之间的虚拟变量,并将其用作颜色上的标量。例如:

plot(1:10)
points(10:1,col="red")
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)

x下面是一个如何使用
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()

太好了,谢谢。那很好用。你知道我该如何从一点到另一点连续改变颜色吗?@Thomas查看一般颜色主题(特别是顺序调色板)和
rgb()
col2rgb()
基本函数来改变颜色,例如根据x轴上的值。阿尔法混合也可用,例如
绘图(复制(2,rnorm(1000)),pch=19,col=“#FF737350”)
。这里的类似问题:。如果使用ggplot,您可以更改透明度的
alpha
参数。@Andrie好的,谢谢。这是一个相关的问题。那么,我应该直接转到ggplot而不是学习R的本土制图吗?@thomas,这取决于个人选择。我的选择是直接学习ggplot,因为我喜欢它语法的一致性。但它有自己的学习曲线。好吧,我想你已经用你的例子回答了关于原生GGV Plot的问题。好东西。我建议先学习基本的R图形。你的图表一开始不会像ggplots那样漂亮,但它非常灵活,允许你做任何你想做的事情。学习曲线也更容易。学习ggplot也是一个好主意。学习ggplot的另一个好处是,您可以为所有类型的绘图(散点、条形、直线等)学习一种语法。基本图形使用各种各样的函数名(plot、hist、barchart等),它们都有自己的特点和期望。另一方面,ggplot2将始终以
ggplot()
qplot()
开头,并且每次输入数据(或多或少)将始终采用相同的格式。ggplot处理图例和缩放的方式也非常方便。最后,ggplot网站非常方便,不过我建议您选择这本书,以便更深入地理解。