2014-05-13 4 views
2

일부 데이터를 플롯하기 위해 smoothScatter을 사용하고 있습니다. 밀도의 색상을 기본값 colorRampPalette(c("white", blues9)에서 투명 빨간색으로 변경하려고합니다. 어떻게해야합니까?R - colorRampPalette에 투명도 추가

smoothScatter(
    x,y,nrpoints=length(df$x), 
    colramp = colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5)) 
) 

을하지만이 일을 넣은 사람은 아니다 :

나는 시도했다.

더 일반적으로 말하자면, 모든 색상을 투명하게 만드는 기능으로 전달할 수있는 colorRampPalette 함수를 어떻게 만들 수 있습니까?

답변

8

당신은 단지 colorRampPalette에 전화로 alpha=TRUE을 추가해야합니다 : '

# Specify alpha as a percentage: 
colorRampAlpha <- function(..., n, alpha) { 
    colors <- colorRampPalette(...)(n) 
    paste(colors, sprintf("%x", ceiling(255*alpha)), sep="") 
} 
colorRampAlpha(c(rgb(1,1,1),rgb(1,0,0)), n=3, alpha=0.5) 
[1] "#FFFFFF80" "#FF7F7F80" "#FF000080" 

당신에게 다음 alpha 인수를하지 않는 것

>?colorRampPalette 
    alpha: logical: should alpha channel (opacity) values should be 
      returned? It is an error to give a true value if ‘space’ is 
      specified. 

> colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5)))(3) 
[1] "#FFFFFF" "#FF7F7F" "#FF0000" 
> colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5)), alpha=TRUE)(3) 
[1] "#FFFFFF80" "#FF7F7F80" "#FF000080" 

당신의 colorRampPalette 때문에, 여기에 수동 솔루션입니다 그러나 미리 원하는 색상 수를 지정해야합니다.

+0

흠 투명한 팔레트를 만들 내 우아 방법입니다하지만 난 오류가 받고 있어요 : COLS = colorRampPalette (색상 = C를 (RGB (1,1, 1,0,5), rgb (1,0,0,0.5)), 알파 = TRUE) colorRamp (colors, ...) 오류 : 사용되지 않은 인수 (alpha = TRUE) – CodeGuy

+0

흠. 아마 R의 새로운 버전을 실행하고 있습니까? –

+0

어떤 버전을 실행하고 있습니까? 나는 3.2에있다 – CodeGuy

0

여기, 제안에 대한 감사를 colorRampPalette

## first specify your color scheme 

colorRampPalette(c("lightgrey","grey","lightblue","blue","darkblue")) -> blues 

## Then create the palette as you would normally 
blues_pal<-blues(500) 

## Finally use paste to set transparency to every color in the vector 
blues_pal_transp<-paste(blues_pal, "50", sep="") 

## and an example 
image(volcano, col=blues_pal_transp)