distribución asimétrica del color en scale_gradient2?

El cambio de los límites superiores para scale_fill_gradient2 también afecta la calibración del color para los valores <0, ya que la distribución del color alrededor de 0 parece ser siempre simétrica, ¿hay alguna manera de obtener una distribución asimétrica de los valores del color?

Aquí un ejemplo mínimo de una ttwig usando geom_tile() :

 data <- read.csv("http://protzkeule.de/data.csv") p <- ggplot(data = data, aes(x = variable, y = meas)) + geom_tile(aes(fill = value)) 

ttwig con límites simétricos:

 p + scale_fill_gradient2(low = "blue", mid = "white", high = "red", guide = "colorbar", limits = c(-0.1, 0.1)) 

pero al cambiar el límite superior, también cambia el mapa de color inferior (observe la barra de colores):

 p + scale_fill_gradient2(low = "blue", mid = "white", high = "red", guide = "colorbar", limits = c(-0.1, 0.3)) 

Lo que quieres es scale_fill_gradientn . Los argumentos no son muy claros (tardé una hora más o menos en descubrir finalmente una parte):

 library("scales") p + scale_fill_gradientn(colours = c("blue","white","red"), values = rescale(c(-.1,0,.3)), guide = "colorbar", limits=c(-.1,.3)) 

Lo que da:

enter image description here