2015-04-25 43 views
1

颜色我有“x”和“y”的列作为数字值,以及第三列“簇”作为十六进制串的数据帧,一个例子如下所示:硬编码十六进制字符串值作为ggplot

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) 

然而,这仅仅分配存储在尺度上的默认前四个值:: hue_pal()(4),我已经改变了最后一个深紫色与十六进制值#520090。我也试图将默认的十六进制值更改为图例中的文本。我曾尝试在“群集1”硬编码“集群2”,......,“第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")) 

任何意见,非常感谢!

回答

2

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

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

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")) 
相关问题