2015-04-25 82 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")) 
相關問題