硬编码十六进制字符串值作为ggplot中的颜色

时间:2015-04-25 23:48:43

标签: r colors ggplot2 hex

我的数据框为" x"和" y"列为数字值,第三列为#34; cluster"作为十六进制字符串,如下所示:

library(ggplot2)
library(scales)
colList = c(scales::hue_pal()(3),"#520090")
dat = data.frame(x=runif(100,0,1),y=runif(100,0,1),cluster=sample(1:4, 100, replace=T))
dat$cluster = factor(dat$cluster)
levels(dat$cluster) = c(colList)
head(dat)

我正在尝试使用" x"创建一个散点图。和" y"映射到x和y轴的列,以及根据存储在" cluster"中的十六进制值着色的那些点。柱。我尝试过以下方法:

ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5)

然而,这只是分配存储在scales :: hue_pal()(4)中的默认前四个值,并且我已将最后一个值更改为带有十六进制值#520090的深紫色。我也试图更改默认的十六进制值,使其不显示为图例中的文本。我试图在" Cluster 1"," Cluster 2",...," Cluster 4"中进行硬编码。作为图例文字:

ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5) + theme(legend.text = element_text("Cluster 1","Cluster 2","Cluster 3","Cluster 4"))

非常感谢任何建议!

1 个答案:

答案 0 :(得分:2)

为了根据群集标识对点进行着色,需要将群集名称(即您的十六进制值)映射到一组美学值。

由于您希望使用群集列中的十六进制值来表示实际颜色,因此可以使用scale_color_manual函数并将cluster列的级别作为values参数。 要更改标签,只需设置所需的标签值。

ggplot(dat, aes(x,y)) + geom_point(aes(colour = cluster), alpha=0.5) +
scale_color_manual(values = levels(dat$cluster), 
                   labels = c("Cluster1","Cluster2","Cluster3", "Cluster4"))