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