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+1에 seq내가 가지고있는 반면,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.