[r] 색상 1 및 색상 2 범위의 n 색상 그라데이션

저는 종종 ggplot2그라디언트를 멋지게 만드는 작업을 합니다 ( 예를 보려면 여기를 클릭하십시오 ). 베이스에서 작업 할 필요가 scales있고 거기에서 컬러 그래디언트를 만드는데도 사용할 수 있다고 생각 하지만 방법에 대해 심각하게 생각하지 않습니다. 기본 목표는 x 색상에서 y 색상까지의 n 색상 팔레트를 생성하는 것입니다. 솔루션은 기본에서 작동해야합니다. 이것은 시작점 이었지만 n을 입력 할 곳이 없습니다.

 scale_colour_gradientn(colours=c("red", "blue"))

나는 잘 알고 있습니다 :

brewer.pal(8, "Spectral") 

에서 RColorBrewer. 나는 ggplot2이 두 가지 색상이 있고 15 가지 색상이 필요하다는 그라디언트를 처리 하는 방법과 유사한 접근 방식을 더 찾고 있습니다 . 어떻게 할 수 있습니까?



답변

colorRampPalette 여기에서 친구가 될 수 있습니다.

colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"

그리고 그것이 효과가 있음을 보여주기 위해 :

plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

여기에 이미지 설명 입력


답변

이전 답변을 확장하기 위해 colorRampPalette두 가지 이상의 색상을 처리 할 수 ​​있습니다.

따라서보다 확장 된 “히트 맵”유형을 보려면 다음을 수행 할 수 있습니다 ….

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

결과 이미지 :

여기에 이미지 설명 입력


답변

다음을 시도하십시오.

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

여기에 이미지 설명 입력


답변

위의 답변은 유용하지만 그래프에서는 검은 색의 어두운 그라디언트를 구별하기가 어렵습니다. 내가 찾은 한 가지 대안은 다음과 같이 회색 색상의 그라디언트를 사용하는 것입니다.

palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

그레이 스케일에 대한 자세한 정보는 여기를 참조하세요.

추가됨

위의 코드를 파란색과 검정색과 같은 다른 색상에 사용했을 때 그라디언트가 명확하지 않았습니다.
heat.colors()더 유용 해 보입니다.

이 문서 에는 더 자세한 정보와 옵션이 있습니다. pdf


답변