varias superponer scale_y_continuous modificar los graficos graficas ggplot etiquetas escala ejes como cambiar r visualization ggplot2

scale_y_continuous - superponer graficas en r ggplot



¿Cómo controlar ylim para una trama facetada con diferentes escalas en ggplot2? (2)

Esto apareció en la lista de correo de ggplot2 hace poco tiempo. Lo que está solicitando actualmente no es posible, pero creo que está en progreso.

En el siguiente ejemplo, ¿cómo configuro ylims para cada una de mis facetas?

qplot(x, value, data=df, geom=c("smooth")) + facet_grid(variable ~ ., scale="free_y")

En cada una de las facetas, el eje y toma un rango diferente de valores y me gustaría diferentes ylims para cada una de las facetas.

Los valores predeterminados son demasiado largos para la tendencia que deseo ver.


Hasta donde sé, esto no se ha implementado en ggplot2, aún. Sin embargo, una solución alternativa (que le proporcionará beneficios que exceden lo que ggplot proporciona automáticamente) es agregar "datos artificiales". Para reducir los ylims simplemente elimine los datos que no quiere trazar (vea en y para un ejemplo).

Aquí hay un ejemplo:

Vamos a configurar algunos datos ficticios que quieras trazar

df <- data.frame(x=rep(seq(1,2,.1),4),f1=factor(rep(c("a","b"),each=22)),f2=factor(rep(c("x","y"),22))) df <- within(df,y <- x^2)

Que podríamos trazar usando gráficos de líneas

p <- ggplot(df,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y") print(p)

Supongamos que queremos que y comience en -10 en la primera fila y 0 en la segunda fila, así que agregamos un punto en (0, -10) a la gráfica superior izquierda y en (0,0) ot la gráfica inferior izquierda:

ylim <- data.frame(x=rep(0,2),y=c(-10,0),f1=factor(c("a","b")),f2=factor(c("x","y"))) dfy <- rbind(df,ylim)

Ahora, al limitar la escala x entre 1 y 2, esos puntos agregados no se grafican (se da una advertencia):

p <- ggplot(dfy,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2)) print(p)

Lo mismo funcionaría para extender el margen anterior agregando puntos con valores y superiores a valores x que se encuentran fuera del rango de xlim.

Esto no funcionará si desea reducir el ylim, en cuyo caso el subconjunto de sus datos sería una solución, por ejemplo, para limitar la fila superior entre -10 y 1.5 que podría usar:

p <- ggplot(dfy,aes(x,y))+geom_line(subset=.(y < 1.5 | f1 != "a"))+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2)) print(p)