-->

如何生成号在R中最鲜明的颜色?(How to generate a number of most d

2019-07-21 04:24发布

我绘制明确的数据集,并想用独特的颜色来代表不同的类别。 鉴于一些n ,我怎么能得到n在R中最鲜明的颜色数? 谢谢。

Answer 1:

我参加了所有的定性调色板从RColorBrewer包。 定性调色板应该提供每个X最鲜明的色彩。 当然,混合将其拼接为一个调色板也相似的颜色,但这是最好的,我可以得到(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))

其它的解决方法是:取所有的R颜色图形设备和从他们的样品。 我删除的灰色阴影,因为他们太相似了。 这使得433点的颜色

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

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

用200个色n = 200

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



Answer 2:

这里有几个选项:

  1. 看一看在palette功能:

     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包(和网站 )。 如果你想发散的颜色,然后选择发散网站上。 例如,

     library(colorBrewer) brewer.pal(7, "BrBG") 
  4. 在我想色调的网站给出了很多漂亮的调色板。 此外,只需选择您需要的调色板。 例如,你可以从网站上的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))) 


Answer 3:

你也可以尝试randomcoloR包 :

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

你可以看到一个饼图中可视化时(如由其他的答案在这里的建议)是一组高度不同的颜色进行选择:

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

示出与50种颜色的饼图中:

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



Answer 4:

不回答OP的问题,但它是值得一提的还有在viridis包里面有连续数据良好的调色板。 它们是视觉上保持一致性,色盲安全和打印机友好的。

为了得到调色板,只需安装包,并使用功能viridis_pal() 有四个选项“A”,“B”,“C”和“d”的选择

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

也有一个很好的谈话解释了在YouTube上良好的色彩映射的复杂性:

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



Answer 5:

您可以使用colorRampPalette从基地或RColorBrewer包:

随着colorRampPalette ,您可以按如下方式指定颜色:

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

您也可以提供十六进制代码,以及:

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包其他可用的调色板。 希望这可以帮助。



Answer 6:

我会建议使用大型调色板外部源。

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

从图形设计师透视讨论的一般问题,并给出大量的可用的调色板的实施例。

要包含一个调色板从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")


Answer 7:

我发现一个网站上提供的20种鲜明的颜色列表: https://sashat.me/2017/01/11/list-of-20-simple-distinct-colors/

col_vector<-c('#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4', '#46f0f0', '#f032e6', '#bcf60c', '#fabebe', '#008080', '#e6beff', '#9a6324', '#fffac8', '#800000', '#aaffc3', '#808000', '#ffd8b1', '#000075', '#808080', '#ffffff', '#000000')

你可以试试!



文章来源: How to generate a number of most distinctive colors in R?