ggplot2 기본 색상 팔레트 에뮬레이션


192

원하는 수의 색상에 대해 ggplot2의 기본 색상 팔레트를 에뮬레이트하는 데 어떤 기능을 사용할 수 있습니까? 예를 들어, 3을 입력하면 다음 색상으로 16 진수 색상의 문자형 벡터가 생성됩니다. 여기에 이미지 설명을 입력하십시오


10
저울 패키지 살펴보기
hadley

2
네! 나는 display.brewer.all()내 책상에 인쇄물을 보관합니다 . 나는 Set1이 요인에 가장 적합하다고 생각합니다.
존 콜비

좋은 생각! 나는 같은 인쇄물을 만들 것입니다. Set1에 동의하면서 이미 대부분의 새 차트에서 사용하고 있습니다.
SFun28

답변:


267

15에서 시작하여 색상환 주위에 동일한 간격으로 색상이 지정됩니다.

gg_color_hue <- function(n) {
  hues = seq(15, 375, length = n + 1)
  hcl(h = hues, l = 65, c = 100)[1:n]
}

예를 들면 다음과 같습니다.

n = 4
cols = gg_color_hue(n)

dev.new(width = 4, height = 4)
plot(1:n, pch = 16, cex = 2, col = cols)

여기에 이미지 설명을 입력하십시오


2
당신의 멋진 같은 +1 I, 간단한 솔루션, 난 여전히 당신이 이유를 이해하려고 노력하고 있지만 length=n+1seq내가 가지고있는 반면,length=n
Andrie

18
0 == 360이기 때문에
hadley

131

이 결과는

library(scales)
show_col(hue_pal()(4))

4 색 ggplot

show_col(hue_pal()(3))

3 색 ggplot


1
이상하게도 (두 번째 그림의) 색상이 RGB 코드와 일치하지 않습니다. 그러나 로컬에서 만든 그래프를 보면 이러한 RGB 코드 정확합니다.
Sparhawk

1
아마도 브라우저 일입니까?
Climbs_lika_Spyder

1
예, 매우 이상합니다. Firefox에서 녹색은 # 15ba3e이고 Chromium에서는 # 00b83a이며 이미지를 다운로드하여 전용 이미지 프로그램 (Gwenview)에서 본 후 # 00b839입니다. Konqueror만이 # 00ba38로 올바르게 표시합니다. 따라서 하나만 옳고 일관성이 없습니다!
Sparhawk

1
색상 이름 (예 : 'red2', 'blue3')을 얻는 방법이 있습니까? # 00b83a와 같은 색상 코드는 직관적으로 사용하기 어렵습니다
Sibo Jiang

2
사본의 편의를 위해 붙여 16 진수 값은 다음과 같습니다 #의 f8766d - 레드 # 00ba38 - 녹색 #의 83b0fc - 블루
pluke

62

이 답변은 모두 훌륭하지만 stackoverflow에서 발견 한 또 다른 유용한 정보를 공유하고 싶었습니다. 여기에는 직접 링크가 있습니다.

기본적으로 @DidzisElferts는 ggplot이 생성 한 플롯을 작성하는 데 사용하는 모든 색상, 좌표 등을 얻는 방법을 보여줍니다. 아주 좋아요!

p <- ggplot(mpg,aes(x=class,fill=class)) + geom_bar()
ggplot_build(p)$data
[[1]]
     fill  y count x ndensity ncount  density PANEL group ymin ymax xmin xmax
1 #F8766D  5     5 1        1      1 1.111111     1     1    0    5 0.55 1.45
2 #C49A00 47    47 2        1      1 1.111111     1     2    0   47 1.55 2.45
3 #53B400 41    41 3        1      1 1.111111     1     3    0   41 2.55 3.45
4 #00C094 11    11 4        1      1 1.111111     1     4    0   11 3.55 4.45
5 #00B6EB 33    33 5        1      1 1.111111     1     5    0   33 4.55 5.45
6 #A58AFF 35    35 6        1      1 1.111111     1     6    0   35 5.55 6.45
7 #FB61D7 62    62 7        1      1 1.111111     1     7    0   62 6.55 7.45

45

Hadley Wickham의 ggplot2 book 106 페이지에서 :

기본 색 구성표 인 scale_colour_hue는 hcl 색상환 주위에 고른 간격의 색조를 선택합니다.

약간의 리버스 엔지니어링을 통해이 함수를 구성 할 수 있습니다.

ggplotColours <- function(n = 6, h = c(0, 360) + 15){
  if ((diff(h) %% 360) < 1) h[2] <- h[2] - 360/n
  hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}

barplot에서 이것을 보여주기 :

y <- 1:3
barplot(y, col = ggplotColours(n = 3))

여기에 이미지 설명을 입력하십시오


2
이것보다 훨씬 간단합니다. 대수의 첫 번째 줄은 피할 수는 있지만 도움이되지는 않지만 hcl360보다 큰 값을 재활용하기 때문입니다.
John Colby

13
당신은 사용할 수 있습니다 scales:::show_col(ggplotColours(n=3))색상과 값을 표시 할 수
합계-R

비록 스케일과 그것의 show_col을 얻는 방법을 아직 알지 못했지만 (16 진수 또는 다른 형식) 값을 내뿜습니다 ...
Stefano
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.