颜色指向ggplot2中的颜色作为列

时间:2017-03-30 22:13:50

标签: r ggplot2

我有一个数据框,其中为列中的每个点指定了颜色:

d<-data.frame(x=1:10,y=1:10,col=c(rep("red",n=5),rep("green",n=5)))
d$col<-as.character(d$col)
ggplot(data=d,aes(x=x,y=y,colour=col))+geom_point()

如您所见,颜色不会被解释为颜色,而是一组,

enter image description here

ggplot可以处理这种情况吗?

2 个答案:

答案 0 :(得分:5)

之前可能已经提出并回答了这个问题。但是,设置数据还有另一个问题。

OP正在通过

创建数据
d <- data.frame(x = 1:10,
                y = 1:10,
                col = c(rep("red", n = 5), rep("green", n = 5)))

这导致两种颜色的交替

d
#    x  y   col
#1   1  1   red
#2   2  2 green
#3   3  3   red
#4   4  4 green
#5   5  5   red
#6   6  6 green
#7   7  7   red
#8   8  8 green
#9   9  9   red
#10 10 10 green 

原因是n不是rep()函数的已定义参数。根据{{​​1}},有效参数为?reptimeslenght.out

可能OP意味着

each

导致连续的行以相同的颜色着色:

d <- data.frame(x = 1:10,
                y = 1:10,
                col = c(rep("red", 5), rep("green", 5)))

顺便说一下,

d
#    x  y   col
#1   1  1   red
#2   2  2   red
#3   3  3   red
#4   4  4   red
#5   5  5   red
#6   6  6 green
#7   7  7 green
#8   8  8 green
#9   9  9 green
#10 10 10 green

可以更清楚地写成

col = c(rep("red", 5), rep("green", 5))

有了这个,下面的情节陈述

col = rep(c("red", "green"), each = 5)

生成相同的图表:

enter image description here

答案 1 :(得分:0)

刚刚发现了:

颜色应作为单独的矢量给出,与数据无关

ggplot(data=d,aes(x=x,y=y))+geom_point(colour=d$col)