2017-02-17 44 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