tutorial - superponer graficas en r ggplot
gradiente de color de escala de ggplot para rango fuera del rango de datos (1)
Es muy importante recordar que en ggplot, los cortes básicamente nunca cambiarán la escala en sí. Solo cambiará lo que se muestra en la guía o leyenda.
Deberías estar cambiando los límites de la escala en su lugar:
ggplot(data=t, aes(x=x, y=y)) +
geom_tile(aes(fill=z)) +
scale_fill_gradientn(limits = c(-3,3),
colours=c("navyblue", "darkmagenta", "darkorange1"),
breaks=b, labels=format(b))
Y ahora, si desea que los saltos que aparecen en la leyenda se extiendan más, puede cambiarlos para establecer dónde aparecen las marcas de verificación.
Una buena analogía a tener en cuenta es siempre los ejes x e y regulares. Si configura "saltos", solo cambiará donde aparecen las marcas de verificación. Si desea modificar la extensión de los ejes x o y, normalmente cambiará una configuración como sus "límites".
Estoy buscando una manera de estirar un gradiente de color entre dos valores y etiquetar la leyenda, independientemente del rango de valores de datos en el conjunto de datos. Esencialmente, ¿existe un equivalente funcional a ylim()
para gradientes de color?
Dado el código que representa el valor de z típicamente entre -1 y 1, puedo trazar y etiquetar un gradiente si los saltos están dentro del rango de datos:
library(ggplot2)
#generator from http://docs.ggplot2.org/current/geom_tile.html
pp <- function (n, r = 4) {
x <- seq(-r * pi, r * pi, len = n)
df <- expand.grid(x = x, y = x)
df$r <- sqrt(df$x^2 + df$y^2)
df$z <- cos(df$r^2) * exp(-df$r / 6)
return(df)
}
t <- pp(30)
summary(t)
b <- c(-.5, 0, .5)
colors <- c(''navyblue'', ''darkmagenta'', ''darkorange1'')
p <- ggplot(data = t, aes(x = x, y = y))+
geom_tile(aes(fill = z))+
scale_fill_gradientn(colors = colors, breaks = b, labels = format(b))
ggsave(plot = p, filename = <somefile.png>, height = 3, width = 4)
Pero cuando cambio los saltos a valores fuera del rango observado, el color del degradado no parece ajustarse y las etiquetas del degradado no aparecen.
b <- c(-3, 0, 3)