scale_fill_stepsn 中的 Ggplot 中心色标为零
Ggplot center color scale at zero in scale_fill_stepsn
工作数据
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
,但我对色阶没有太多控制。
在我看来,以零为中心的对称比例可能是一个很好的解决方案。
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)
工作数据
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
,但我对色阶没有太多控制。
在我看来,以零为中心的对称比例可能是一个很好的解决方案。
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)