我有一个数字矢量这样自动生成的颜色矢量,如何从数字矢量
> 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”)创建不同的颜色' –