链接颜色与整数ggplot2

时间:2015-10-22 14:34:35

标签: r colors ggplot2

我是ggplo2的新手,我没有设法重现我使用原生plot功能的东西:基本上我迭代地为一个图添加点,我希望新的点添加一个颜色也在不断变换。

MWE:

pts = data.frame(x = rnorm(10), y = rnorm(10))
plot(pts, pch = 19)
for(i in 2:5) {
   pts = data.frame(x = rnorm(10), y = rnorm(10))
   points(pts, col = i, pch = 19)
}

给出: enter image description here

使用ggplot2我有:

pts = data.frame(x = rnorm(10), y = rnorm(10))
p <- ggplot(pts, aes(x,y)) + geom_point()
print(p)
for(i in 2:5) {
   pts = data.frame(x = rnorm(10), y = rnorm(10))
   p <- p + geom_point(data = pts, aes(colour = i))
   print(p)
}

enter image description here 这并没有给出同样的东西。我曾想过使用scale_colour_hue(5)代替aes(colour=i)来指定我想要5种不同的可区分颜色,但我收到了错误:

  

错误:提供给离散比例的连续值

谢谢!

1 个答案:

答案 0 :(得分:3)

由于您案例的迭代性质,这可能是一个解决方案。我已将迭代添加到数据中,以获取相关数据集中包含的某个点的所有信息。然后我使用factor(i)为它着色。你使用aes(color=i)是正确的,但是当迭代结束时我等于5时,所有点都被着色为5(第一次迭代除外,因为它们没有颜色映射。

修改:创建了一个列&#39;迭代&#39;因子级别为1,每个数据集中的迭代次数,并强制所有级别显示在scale参数中。

set.seed(124)
n_iterations <- 5
pts = data.frame(x = rnorm(10), 
                 y = rnorm(10),
                 iteration=factor(1,levels=1:n_iterations)
)
p <- ggplot(pts, aes(x,y, color=iteration)) + geom_point()+
  scale_colour_discrete(drop=FALSE) + #forces all levels to display
  ylim(c(-2.5,2.5)) #keeps plot limits constant

for(i in 2:5) {
  pts = data.frame(x = rnorm(10), 
                   y = rnorm(10), 
                   iteration=factor(i,levels=1:n_iterations))
  p <- p + geom_point(data = pts)
  print(p)
}

enter image description here

迭代图像: enter image description here