我有一個數字矢量這樣自動生成的顏色矢量,如何從數字矢量
> 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))
但沒有奏效。
我有一個數字矢量這樣自動生成的顏色矢量,如何從數字矢量
> 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))
但沒有奏效。
我認爲你打算的是如果z中的值相同,那麼顏色是相同的。你想要的是:
z <- c("cat","cat","dog","dolphin","cat")
rainbow(length(unique(z)))[as.numeric(as.factor(z))]
[1] "#FF0000FF" "#FF0000FF" "#00FF00FF" "#0000FFFF" "#FF0000FF"
這會產生不同的顏色對於z的每個不同的值,但是當值相等時,他們得到了相同的顏色。
好的。因爲因素是整數,所以可以縮短一點,如下所示:'z < - factor(z);彩虹(長度(水平(z)))[z]' –
@ G5W感謝它完美的工作,你的措辭更好。 – Ahdee
你可以使用'rainbow(length(unique(z)))[z]',它根據因子水平創建一個唯一顏色矢量,然後使用z指數獲取顏色值。 –
你也可以使用RColorBrewer軟件包並通過'zcolor < - brewer.pal(length(z),「Set2」)創建不同的顏色' –