作爲一種快速入門手段,只需在色彩漸變中多加幾次即可重複最終色彩,從而使該區域的色彩漸變變得「平坦」。其結果是,最高z
值都將具有相同的顏色:
library('gplots')
library('fields')
library('RColorBrewer')
# Original 11 colors
cols = rev(brewer.pal(11,'Spectral'))
# Repeat the 11th color an extra 5 times
cols = c(cols,rep(cols[11],5))
rf <- colorRampPalette(cols) # make colors
r <- rf(64)
z <- matrix(data = 0, nrow = 3, ncol = 3)
z[1,1] <- .15
z[2, ] <- .10
z[3, ] <- .05
image.plot(z, col = r, zlim = c(0, .15))
UPDATE:根據您的意見,得到的傳說,你想要的方式最簡單的方法,可能是在繪圖之前(z[z>0.1]=0.1
)將所有大於0.1的值更改爲0.1(或任何z-cutoff值)。然後你可以使用你的原始代碼。但是,如果出於某種原因您不想這樣做,那麼這裏有一個解決方案(無論如何,這是一個破解)來獲取高於截斷點的z值,同時僅顯示低於截斷值的值。首先,運行上面的代碼。然後,下面的代碼用填充的白色矩形「覆蓋」圖例,並添加一個具有所需值範圍的新圖例。
注意,在下面的解決方案,在0-0.15顏色漸變顏色到值的映射一般不會正是匹配的0-0.1顏色漸變,但你可以讓他們很接近通過調整您在第一個顏色漸變中重複最終顏色的次數。爲了獲得完全匹配,我想你可以使用colorRamp
函數將特定顏色映射到特定的z值。
# Cover legend
rect(1.3,-1,1.6,2, col="white", border="white", xpd=TRUE)
# Go back to original 11 colors for color ramp
cols = rev(brewer.pal(11,'Spectral'))
rf <- colorRampPalette(cols) # make colors
r <- rf(64)
# Plot only the legend with z cutoff at 0.10
image.plot(z, col = r, zlim = c(0, .10), legend.only=TRUE)
呀,但隨後拋出關閉圖例。如果您可以找到縮小圖例以僅顯示值0到.10的方法,那麼您有一個工作解決方案。 – Nick