Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2中将颜色作为列的颜色点_R_Ggplot2 - Fatal编程技术网

R 在ggplot2中将颜色作为列的颜色点

R 在ggplot2中将颜色作为列的颜色点,r,ggplot2,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() d刚刚了解了如何: 颜色应作为单独的向量给出,且与数据无关 ggplot(data=d,aes(x=x,y=y))+geom_point(col

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

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()
d刚刚了解了如何:

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

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

这个问题以前可能有人问过,也有人回答过。但是,在设置数据时还有另一个问题

OP正在通过以下方式创建数据:

d <- data.frame(x = 1:10,
                y = 1:10,
                col = c(rep("red", n = 5), rep("green", n = 5)))
原因是
n
不是
rep()
函数的定义参数。根据
?rep
,有效参数为
时间
长度
、和
每个

也许,OP的意思是

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

col = c(rep("red", 5), rep("green", 5))
可以写得更清楚

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

有了这个,下面的plot语句

library(ggplot2)
# variant 1 (OP's own answer)
ggplot(data = d, aes(x = x, y = y)) + geom_point(colour = d$col)
# variant 2 (aosmith' comment, more "ggplot2-like")
ggplot(data = d, aes(x = x, y = y, colour = col)) + geom_point() + 
  scale_colour_identity()
制作相同的图表:


另请参见
scale\u color\u identity
@DavidHeckmann我认为这不是一个好的欺骗目标。它处理跨多个单独绘图的组的一致着色。不过,我相信实际的问题以前有人问过。
col = rep(c("red", "green"), each = 5)
library(ggplot2)
# variant 1 (OP's own answer)
ggplot(data = d, aes(x = x, y = y)) + geom_point(colour = d$col)
# variant 2 (aosmith' comment, more "ggplot2-like")
ggplot(data = d, aes(x = x, y = y, colour = col)) + geom_point() + 
  scale_colour_identity()