2013-08-23 2 views
0

에 나는 R.선택 색상/맥주 색상을 수동으로 ggplot2

에 ggplot2 라이브러리를 사용하여 진보적 인 플롯을 생산하기 위해 노력하고 내가 '진보적'을 의미하는 것은 프리젠 테이션을 위해, 나는에 라인을 추가 할 수 있다는 것입니다

한 번에 하나씩 플롯하므로 많은 줄이 여러 번있는 단일 줄거리를 여러 줄 생성하고 각 줄마다 추가 줄거리를 만듭니다.

ggplot2에서 각 줄의 색상이 플롯에서 플롯으로 변경된다는 점을 제외하면 scale_colour_hue()를 사용하면 효과적입니다. 색상을 일정하게 유지하고 싶습니다 (즉, 플롯 1의 라인 1에는 컬러 X가 있고 플롯 5에는 라인 1에는 여전히 컬러 X가 있습니다 ... 등). scale_colour_manual()을 사용하여 수동으로 색상을 선언함으로써이를 달성 할 수 있지만 이러한 색상 ("빨간색", "파란색"등)의 미적 특성으로 인해 제한을받는 것처럼 느껴집니다. 색조 팔레트에서 각 색상에 대한 16 진수 값을 실제로 찾아야합니까? 아니면 새로운 행을 추가 할 때마다 고정 된 순서로 팔레트를 사용하도록 scale_colour_hue() 함수에 지시 할 수있는 더 쉬운 방법이 있습니까?

감사합니다. 도움에 감사드립니다.

+0

시작하기 전에 필요한 총 줄 수를 알고 있습니까? – mnel

답변

3

당신은 당신이 추가 할 라인의 총 수, 당신은 scale_colour_manual

library(RColorBrewer) 
library(plyr) 
# a function to create a brewer palette of any length (kittens will be killed) 
myBrewerPal <- function(pal = 'Spectral'){ 
    colorRampPalette(brewer.pal(name = pal, n = 11)) 
} 

# function to create a named vector of colours for a given 
# vector x 
create.palette <- function(x, pal = 'Spectral'){ 
    ux <- sort(unique(x)) 
    n <- length(ux) 
    setNames(myBrewerPal(pal)(n), ux) 

} 

# create a manual scale with the named values part 
myPal <- scale_colour_manual(name = 'Gear', values = create.palette(factor(mtcars$gear))) 


# the base plot (no lines) 
baseplot <- ggplot(mtcars, aes(x=hp, y = disp, colour = factor(gear))) + myPal 
# 1 line 
baseplot + geom_line(subset = .(gear==3)) 

enter image description here

# 2 lines (gear = 3 is consistent) 
baseplot + geom_line(subset = .(gear %in% 3:4)) 

enter image description here

와 함께 사용하기에 적합한 색상과 이름 규모를 만들 수를 미리 알고있는 경우
관련 문제