簡體   English   中英

R 中帶有 colorRampPalette 的不對稱色標

[英]Asymmetric color scale with colorRampPalette in R

我在填充顏色條刻度時遇到問題。 由於我的值在 -85 到 15 之間不是對稱的,間隔為 5,所以我希望正值使用紅色,負值使用藍色。 這是我使用的代碼:

brks <-seq(-85,15,5)
length(brks)
#Temperature
colorscale <- rev(colorRampPalette(brewer.pal(11, "RdBu"))(length(brks)-1))
windows()
image.plot(x=lon, y=lat,inputvar,
           xlim=c(12,25),ylim=c(44,50),
           col=colorscale,breaks=brks,lab.breaks=brks,
           xlab="Longitude (deg)", ylab="Latitude (deg)")
title(main="Annual Bias Difference Summer Days")
mtext("Actual Difference (days)", side=4, adj=0.5,line=0.4)
map(database="world",add=TRUE)
# make grid lines
abline(h=seq(44,50,1), v=seq(12,24,2),lty=2,col="grey",lwd=0.5)

這是我目前的情節: 不對稱色標

我希望你能用 colorRampPalette 為我解釋,因為我需要使用這個功能。 謝謝!

bias=2.74添加到您的colorRampPalette()調用中。 所以:

colorscale <- rev(colorRampPalette(brewer.pal(11, "RdBu"), bias=2.74)(length(brks)-1))

偏差會改變刻度的中心。 為了計算出使用多少偏差,我查看了colorRamp的代碼。 它唯一使用bias的地方是在下面的行中,它計算出用於插值顏色的線性組合。

x <- seq.int(0, 1, length.out = nc)^bias

由於您想將比例尺的中點映射到比例尺的 0.15,因此您需要x=log(0.15)/log(0.5)=2.74

我沒有你的數據,但這里有一個 ggplot 結果的例子:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM