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

4
我经常使用Excel中的散点图对比两个时间序列,但由于近期数据更为相关,我会使用不同的高亮显示较新的时间段:
在这种情况下,月份,周和今天的绘图只是相同时间序列的不同(较新的)切片,因此基本上在该图表中有四个重叠的绘图。我该如何在R中实现相同的操作呢?我已经得到了如下结果:
但我想复制我在Excel中拥有的内容。我该如何向R图表添加新的绘图?
或者,我甚至可以进一步使用R中的col属性,使颜色连续增加到今天的值,从而避免这些离散的步骤?我该如何做到这一点?

类似的问题在这里:https://dev59.com/zG035IYBdhLWcg3wVuh1#5481187。如果使用ggplot,您可以更改透明度的“alpha”参数。 - Chase
2个回答

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


太棒了,谢谢。这个效果非常好。你有没有什么办法可以让颜色在不同的点之间连续变化? - Thomas Browne
1
@Thomas 请查看RColorBrewer 获取常用的颜色主题(特别是连续调色板),使用 rgb()col2rgb() 基本函数来改变颜色,例如根据 x 轴上的值。还可以进行 alpha 混合,例如 plot(replicate(2, rnorm(1000)), pch=19, col="#FF737350") - chl

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")

enter image description here


@Andrie 好的,谢谢。这里有一个相关的问题。我应该直接转向 ggplot,而不是学习 R 的本地图表吗? - Thomas Browne
1
@thomas,这取决于个人选择。我的选择是直接学习ggplot,因为我喜欢它的语法一致性。但是它有自己的学习曲线。 - Andrie
我建议首先学习基本的 R 图形。起初,你的图表可能不像 ggplot 那么漂亮,但这种方法非常灵活,可以让你做任何想做的事情。学习曲线也更容易。不过,学习 ggplot 也总是一个好主意。 - Sacha Epskamp
2
学习ggplot的另一个好处是,你可以学习到一种语法来绘制各种类型的图表(散点图、条形图、折线图等)。基础图形使用各种函数名称(plot、hist、barchart、其他??),并且都有自己的怪癖和期望。另一方面,ggplot2始终以ggplot()qplot()开头,输入数据(或多或少)每次都会以相同的格式呈现。ggplot处理图例和缩放的方式也非常方便。最后,ggplot网站非常方便,但我建议您阅读书籍以深入理解。 </end soapbox> - Chase
我更喜欢矩形,但有些人认为黄金比例是一个非常好的设计选择。这在自然界、数学、建筑、艺术、设计等方面都有所体现。请参阅http://en.wikipedia.org/wiki/Golden_ratio以获取更多信息。 - Andrie
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接