algunos datos de ejemplo:¿Cómo se establecen diferentes límites de escala para diferentes facetas?
dfr <- data.frame(
x = rep.int(1:10, 2),
y = runif(20),
g = factor(rep(letters[1:2], each = 10))
)
Un simple diagrama de dispersión con dos facetas:
p <- ggplot(dfr, aes(x, y)) +
geom_point() +
facet_wrap(~ g, scales = "free_y")
I puede establecer los límites del eje para todos los paneles con
p + scale_y_continuous(limits = c(0.2, 0.8))
(o una envoltura para este como ylim
)
pero cómo puedo establecer di ¿Límites de ejes diferentes para diferentes facetas?
La forma latticey de hacerlo sería la de pasar una lista con este argumento, por ejemplo,
p + scale_y_continuous(limits = list(c(0.2, 0.8), c(0, 0.5)))
desgracia que solo emite un error en el caso ggplot2.
EDIT:
Aquí un corte parcial. Si desea ampliar el rango de las escalas, puede agregar columnas a su conjunto de datos especificando los límites, y luego dibujarlas con geom_blank
.
conjunto de datos Modificado:
dfr <- data.frame(
x = rep.int(1:10, 2),
y = runif(20),
g = factor(rep(letters[1:2], each = 10)),
ymin = rep(c(-0.6, 0.3), each = 10),
ymax = rep(c(1.8, 0.5), each = 10)
)
parcela Actualizado:
p + geom_blank(aes(y = ymin)) + geom_blank(aes(y = ymax))
Ahora las escalas son diferentes y la mano izquierda es la correcta. Desafortunadamente, la escala de la mano derecha no se contrae, ya que necesita dejar espacio para los puntos.
En caso de que ayude, ahora podemos reformular la pregunta como "¿es posible dibujar puntos sin que se recalculen las escalas y sin llamar explícitamente al scale_y_continuous
?"
Gracias por el enlace. No es exactamente la respuesta que esperaba. –
@Ritchie: consulte con Hadley, podría tener algo en desarrollo en las versiones de desarrollo de ggplot2 –