2017-02-17 40 views
0

我有一個數字矢量這樣自動生成的顏色矢量,如何從數字矢量

> z <- c("cat","cat","dog","dolphin","cat") 
> z <- as.numeric(as.factor(z)) 
> z 
[1] 1 1 2 3 1 
從這個

,我怎麼自動生成一些顏色調色板?例如 ,c("red","red", "blue", "green", "red")或任何可用的顏色托盤。

我試過使用rainbow(length(z))但沒有奏效。

+1

你可以使用'rainbow(length(unique(z)))[z]',它根據因子水平創建一個唯一顏色矢量,然後使用z指數獲取顏色值。 –

+0

你也可以使用RColorBrewer軟件包並通過'zcolor < - brewer.pal(length(z),「Set2」)創建不同的顏色' –

回答

2

我認爲你打算的是如果z中的值相同,那麼顏色是相同的。你想要的是:

z <- c("cat","cat","dog","dolphin","cat") 
rainbow(length(unique(z)))[as.numeric(as.factor(z))] 
[1] "#FF0000FF" "#FF0000FF" "#00FF00FF" "#0000FFFF" "#FF0000FF" 

這會產生不同的顏色對於z的每個不同的值,但是當值相等時,他們得到了相同的顏色。

+2

好的。因爲因素是整數,所以可以縮短一點,如下所示:'z < - factor(z);彩虹(長度(水平(z)))[z]' –

+0

@ G5W感謝它完美的工作,你的措辭更好。 – Ahdee