2013-09-27 98 views
1

我想繪製地圖葉綠素的濃度,但值被分散在這樣一種方式,圖例變得不可讀(見圖)- [R如何控制色條/圖例的間距

chl_a

所以我試圖控制顏色欄/圖例中的顏色的間距。我想平均分配它(同時保持地圖本身不均勻的中斷)。

下面的示例非常簡化,適用於柵格圖,但image.plot也是如此。

library(raster)  
r <- raster(ncol=5, nrow=4) 
r[] <- 1:20 
plot(r, breaks = c(0,1,2,3,5,10,20), col = rainbow(6)) 

我想過把數據轉換成日誌值,但是這並沒有給我一個滿意的結果。所以對這個傳說的任何幫助都非常感謝。

+0

不能你只是分裂'r'中的值範圍轉換爲十六進制,並將其用於創建傳遞給'col'參數的調色板的colorRamp? –

+0

謝謝,這可能是解決問題的一種方法,但我更願意控制'r'中的中斷並找到控制圖例間距的解決方案。 – Lukas

回答

2

這很醜,但你可以使用plot作爲地圖,image.plot作爲你的傳奇。您需要將自定義分隔的標籤添加到等分分隔的位置。

劇情地圖而不圖例:

library(raster) 
r <- raster(ncol=5, nrow=4) 
r[] <- 1:20 
my_breaks = c(0,1,2,3,5,10,20) 
n = 6 
my_col = rainbow(n) 
plot(r, breaks = my_breaks, col = my_col, legend = FALSE, zlim=c(0,20)) 

默認場所將0至20等距間隔開:使用image.plotfields

def_breaks = seq(0,20,length.out=(n+1)) 

添加圖例,在默認放置自定義休息標籤打破立場:

library(fields) 
image.plot(r, zlim = c(0,20), 
      legend.only = TRUE, 
      col = my_col, 
      axis.args = list(at = def_breaks, labels = my_breaks))