범주 형 데이터 집합을 플로팅하고 다른 범주를 나타내는 데 고유 한 색을 사용하려고합니다. 숫자가 주어지면 R에서 가장 많은 고유 색상을 n
어떻게 얻을 n
수 있습니까? 감사.
답변
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))
답변
몇 가지 옵션이 있습니다.
-
palette
기능을 살펴보십시오 .palette(rainbow(6)) # six color rainbow (palette(gray(seq(0,.9,len = 25)))) #grey scale
-
그리고
colorRampPalette
기능 :##Move from blue to red in four colours colorRampPalette(c("blue", "red"))( 4)
-
colorBrewer
패키지 및 웹 사이트를 보십시오 . 당신은 색상을 발산하려면, 선택한 다음 분기 사이트. 예를 들어library(colorBrewer) brewer.pal(7, "BrBG")
-
내가 원하는 색상 웹 사이트는 좋은 팔레트를 많이 제공합니다. 다시, 필요한 팔레트를 선택하십시오. 예를 들어, 사이트에서 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)))
답변
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)
답변
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 | 나다니엘 스미스와 스테판 반 데르 월트
답변
colorRampPalette
기본 또는 RColorBrewer
패키지 에서 사용할 수 있습니다 .
을 사용하면 colorRampPalette
다음과 같이 색상을 지정할 수 있습니다.
colorRampPalette(c("red", "green"))(5)
# [1] "#FF0000" "#BF3F00" "#7F7F00" "#3FBF00" "#00FF00"
16 진수 코드도 제공 할 수 있습니다.
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
사용 가능한 다른 팔레트 는 패키지를 참조하십시오. 도움이 되었기를 바랍니다.
답변
대형 컬러 팔레트에 외부 소스를 사용하는 것이 좋습니다.
http://tools.medialab.sciences-po.fr/iwanthue/
다양한 매개 변수에 따라 모든 크기의 팔레트를 작성하는 서비스가 있으며
그래픽 디자이너 관점에서 일반적인 문제를 논의하고 사용 가능한 팔레트의 많은 예를 제공합니다.
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")
답변
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')
시도해 볼 수 있습니다!