如何在R中生成一些最独特的颜色?

我正在绘制一个分类数据集,并希望使用不同的颜色来表示不同的类别。 给定一个数n ,我怎样才能得到n个最独特的颜色R? 谢谢。

这里有几个选项:

  1. 看看palettefunction:

     palette(rainbow(6)) # six color rainbow (palette(gray(seq(0,.9,len = 25)))) #grey scale 
  2. colorRampPalette函数:

     ##Move from blue to red in four colours colorRampPalette(c("blue", "red"))( 4) 
  3. 看看colorBrewer包(和网站 )。 如果你想分色,然后在网站上select分歧 。 例如,

     library(colorBrewer) brewer.pal(7, "BrBG") 
  4. 我想色相网站提供了很多不错的调色板。 再次,只需select你需要的调色板。 例如,您可以从网站获取RGB颜色并制作自己的调色板:

     palette(c(rgb(170,93,152, maxColorValue=255), rgb(103,143,57, maxColorValue=255), rgb(196,95,46, maxColorValue=255), rgb(79,134,165, maxColorValue=255), rgb(205,71,103, maxColorValue=255), rgb(203,77,202, maxColorValue=255), rgb(115,113,206, maxColorValue=255))) 

我join了RColorBrewer软件包的所有定性调色板。 定性调色板应该提供X个最独特的颜色。 当然,混合他们join到一个调色板也相似的颜色,但这是我能得到的最好(74色)。

 library(RColorBrewer) n <- 60 qual_col_pals = brewer.pal.info[brewer.pal.info$category == 'qual',] col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals))) pie(rep(1,n), col=sample(col_vector, n)) 

colour_Brewer_qual_60

其他的解决scheme是:从graphics设备采取所有R颜色,并从他们采样。 我删除了灰色的阴影,因为它们太相似了。 这给了433种颜色

 color = grDevices::colors()[grep('gr(a|e)y', grDevices::colors(), invert = T)] 

20种颜色的集合

 pie(rep(1,n), col=sample(color, n)) 

有200种颜色n = 200

 pie(rep(1,n), col=sample(color, n)) 

一套200种颜色

您可以使用基本或RColorBrewer包中的RColorBrewer

使用colorRampPalette ,您可以指定颜色如下:

 colorRampPalette(c("red", "green"))(5) # [1] "#FF0000" "#BF3F00" "#7F7F00" "#3FBF00" "#00FF00" 

您也可以提供hex代码:

 colorRampPalette(c("#3794bf", "#FFFFFF", "#df8640"))(5) # [1] "#3794BF" "#9BC9DF" "#FFFFFF" "#EFC29F" "#DF8640" # Note that the mid color is the mid value... 

使用RColorBrewer您可以使用预先存在的调色板中的颜色:

 require(RColorBrewer) brewer.pal(9, "Set1") # [1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3" "#FF7F00" "#FFFF33" "#A65628" "#F781BF" # [9] "#999999" 

查看其他可用调色板的RColorBrewer包。 希望这可以帮助。

你也可以尝试一下randomcoloR包 :

 library(randomcoloR) n <- 20 palette <- distinctColorPalette(n) 

您可以看到,在饼图中进行可视化时,会select一组高度截然不同的颜色(如其他答案所示):

 pie(rep(1, n), col=palette) 

在这里输入图像说明

以50种颜色的饼图显示:

 n <- 50 palette <- distinctColorPalette(n) pie(rep(1, n), col=palette) 

在这里输入图像说明

也有一种相当“新”的方式来获得最佳的独特色彩调色板,也涉及到色盲和可能的黑色和白色转换与Viridis调色板 。

要获得调色板,只需安装包并使用函数viridis_pal()

 install.packages("viridis") library(viridis) viridis_pal(option = "D")(n) # n = number of colors seeked 

用选项“A”,“B”,“C”和“D”在这些调色板之间进行select:

[编辑:我不允许发布超过两个链接,因为没有足够的声望点,我会更新图片,如果我得到upvotes …]

有关更多示例,请访问该包的小插曲。 一些美丽的例子:

在这里输入图像说明

还有一个很好的演讲,解释了YouTube上好的调色板的复杂性:

Matplotlib |更好的默认颜色映射 SciPy 2015 | 纳撒尼尔史密斯和史蒂芬范德沃尔特

我会build议使用大型调色板的外部来源。

http://tools.medialab.sciences-po.fr/iwanthue/

有一个服务根据各种参数组成任何大小的调色板

https://graphicdesign.stackexchange.com/questions/3682/where-can-i-find-a-large-palette-set-of-contrasting-colors-for-coloring-many-d/3815

从graphicsdevise师的angular度讨论了一般问题,并给出了大量可用调色板的例子。

要包含RGB值的调色板,您只需要将值复制到一个向量中,例如:

 colors37 = c("#466791","#60bf37","#953ada","#4fbe6c","#ce49d3","#a7b43d","#5a51dc","#d49f36","#552095","#507f2d","#db37aa","#84b67c","#a06fda","#df462a","#5b83db","#c76c2d","#4f49a3","#82702d","#dd6bbb","#334c22","#d83979","#55baad","#dc4555","#62aad3","#8c3025","#417d61","#862977","#bba672","#403367","#da8a6d","#a79cd4","#71482c","#c689d0","#6b2940","#d593a7","#895c8b","#bd5975") 
    Interesting Posts