作業資料
m=raster(ncol=10,nrow=10)
m[,]=runif(100, -0.8, 0.5)
tmp=data.table(as.data.frame(m,xy=TRUE))
ggplot() geom_tile(data = tmp, aes(x = x, y = y ,fill=layer))
scale_fill_stepsn(colors=c('#b2182b','#ef8a62','#fddbc7','#f7f7f7','#d1e5f0','#67a9cf','#2166ac'),n.breaks=10)
然而,這并不以零為中心,因為一些負值是藍色的

我試圖繪制多個數字,顯示 -1 和 1 之間的某個位置的資料,但是大多數數字的資料并不以零為中心,因為正資料或負資料具有更大的范圍。在圖中,我希望正值顯示為藍色,正值顯示為紅色,并控制 binnes 相距 0.1 或 0.2。
我如何以編程方式強制顏色比例scale_fill_stepsn以零為中心,而不會一直擺弄中斷?我曾嘗試使用n.breaks并嘗試scale_fill_steps2使用我對色標沒有太多控制的方法。
uj5u.com熱心網友回復:
在我看來,以零為中心的對稱比例可能是一個很好的解決方案。
library(raster)
library(data.table)
library(ggplot2)
set.seed(12345)
m <- raster(ncol=10,nrow=10)
m[,] <- runif(100, -0.8, 0.5)
tmp <- data.table(as.data.frame(m,xy=TRUE))
lmt <- ceiling(10*max(abs(range(tmp$layer))))/10
ggplot()
geom_tile(data = tmp, aes(x = x, y = y ,fill=layer))
scale_fill_stepsn(colors=c('#b2182b','#ef8a62','#fddbc7',
'#f7f7f7','#d1e5f0','#67a9cf','#2166ac'),
n.breaks=10, limits=c(-lmt,lmt), show.limits=T)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364235.html
