2012-05-11 11 views

Respuesta

29

Dado que breaks en escalas puede tomar una función, me imagino que podría envolver el algoritmo de ruptura básico en una función que no permite números enteros.

de inicio con un ejemplo:

ggplot(mtcars, aes(wt, mpg)) + 
geom_point() + 
facet_grid(am+cyl~., scales="free_y") 

enter image description here

En cuanto a la forma en scales::pretty_breaks se junta, hacer una función que lo envuelve y sólo permite entero se abre paso:

library("scales") 
integer_breaks <- function(n = 5, ...) { 
    breaker <- pretty_breaks(n, ...) 
    function(x) { 
    breaks <- breaker(x) 
    breaks[breaks == floor(breaks)] 
    } 
} 

Ahora utilice la función que devuelve como la función breaks en la escala

ggplot(mtcars, aes(wt, mpg)) + 
geom_point() + 
facet_grid(am+cyl~., scales="free_y") + 
scale_y_continuous(breaks = integer_breaks()) 

enter image description here

+0

+1 agradable, no me había dado cuenta de que las escalas podrían tener una función – baptiste

+0

Esto es muy bueno, muchas gracias. Además, no sabía de pretty_breaks, por lo que su referencia fue muy útil, ya que tengo la intención de usarlo mucho. – MikeTP

7

podría estar perdiendo algo aquí, pero me gustaría hacer algo como esto.

library(ggplot2) 
ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    facet_grid(am+cyl~., scales="free_y", space = "free_y") + 
    scale_y_continuous(breaks = seq(0, 40, 2), expand = c(0, 1)) 

enter image description here

+0

Muchas gracias. Creo que su solución funciona bien si sabía de antemano dónde establecer los descansos, mientras que con Brian Diggs no necesita saber con anticipación. Agradezco su ayuda y encontré el uso de su pluma de: espacio = "free_y" y expand = c (0, 1) para ser especialmente informativo ya que no estaba al tanto de esas características. – MikeTP

Cuestiones relacionadas