Cómo cambiar xlim en ggplot

Ha habido un par de preguntas de cómo cambiar ggplot eje x de la garrapata, pero estoy teniendo problemas posiblemente a causa de otros asthetics estoy utilizando para la trama. Quiero extender el eje x de la garrapata a 25 de 7.

Estoy usando el siguiente vector:

var <- c(2,2,1,0,1,1,1,1,1,3,2,3,3,5,1,4,4,0,3,4,1,0,3,3,0,0,
         1,3,2,6,2,2,2,1,0,2,3,2,0,0,0,0,3,2,2,4,3,2,2,0,4,1,0,1,3,1,4,3,1,2,
         6,7,6,1,2,2,4,5,3,0,6,5,2,0,7,1,7,3,1,4,1,1,2,1,1,2,1,1,4,2,0,3,3,2,2,2,5,3,2,5,2,5)

Puedo usar el siguiente código para hacer un histograma donde el eje x de la garrapata está por debajo de la barra de

df <- data.table(x = var)
df <- df[, .N, by=x]

p <- ggplot(df, aes(x=factor(x), y=N)) +
     geom_bar(stat="identity", width=1.0, 
              colour = "darkgreen",
              fill = 'lightslateblue')

p <- p + labs(title = "hello world", x = "x tick", y = "ytick") 

print(p)

Cuando puedo imprimir el histograma me gustaría que el eje x de las garrapatas a alcanzar los 25

Cómo cambiar xlim en ggplot

He intentado utilizar coord_cartesian(xlim = c(-0, 25)) pero no traza correctamente como me gustaría que las garrapatas a ser marcados a lo largo del eje x.

Cómo cambiar xlim en ggplot

  • Gracias por hacer que sea más fácil para replicar su ejemplo. Hay una razón que usted no utilice el valor predeterminado ggplot histograma?
  • range(var) es [1] 0 7, por lo que está recibiendo el comportamiento de derecho de su coord_cartesian llamada. Su y rango es correcto (se va a la 25). ¿Por qué necesita el x eje para ir a 25? Si usted tiene el x & ejes y variables mal, trate de p <- ggplot(df, aes(x=N, y=x)) si desea que los datos que se muestran.
  • hrbrmstr quiero comparar un cambio en el histograma a otra distribución. Para ello, el x y el eje y debe ser el mismo. Su sólo una coincidencia que necesito para el eje x de la garrapata para llegar a 25, mientras que es el máximo para el eje. De hecho, yo también tendría que cambiar el eje y 50. No me pregunte, porque yo podría reproducir de cualquier manera puedo cambiar el eje x.
  • puedo preguntar cómo fueron capaces de cambiar rápidamente la lista de salida que originalmente publicado en el formato vectorial?
  • todo lo que hizo fue publicar el resultado de una impresión de un vector o de un componente vectorial de una lista. súper fácil de hacer que en el formato adecuado. usted shld realmente hacer dput su aliado en TAN.
InformationsquelleAutor DataTx | 2014-09-27

2 Kommentare

  1. 4

    El problema es que se está convirtiendo x a un factor en la estética de la llamada. Usted puede evitar esto mediante la especificación de los «niveles» que quieres de antemano y asegurarse de que no caiga (a partir de esta pregunta):

    df$x <- factor(df$x, levels=c(0:25))
    
    p <- ggplot(df, aes(x=x, y=N)) +
         geom_bar(stat="identity", width=1.0, 
                 colour = "darkgreen",
                 fill = 'lightslateblue')
    
    p <- p + labs(title = "hello world", x = "x tick", y = "ytick") +
      scale_x_discrete(drop=FALSE) + ylim(c(0, 50))
    
    print(p)

    Que le dará un largo histograma.

    Cómo cambiar xlim en ggplot

    No estoy seguro de por qué usted está produciendo un histograma en esta rotonda camino a través de:

    p <- qplot(var, geom="histogram") + xlim(c(0, 25)) + ylim(c(0, 50))

    Cómo cambiar xlim en ggplot

    Edición: Cambiar ylim a 0-50.

    • Gracias @andybega por la ayuda. Para el primer gráfico se muestra cómo puedo cambiar el intervalo de la ylim a romper en intervalos de 5
    • Eres bienvenido. Para los descansos de 5, en lugar de ylim, uso scale_y_continuous(limits=c(0, 50), breaks=seq(0, 50, 5)).
  2. 0

    Esta solución puede ayudar a:

    library(ggplot2)
    library(data.table)
    
    df <- data.table(x = var)
    df <- df[, .N, by=x]
    
    # Add 8-25 rows to your data in order to get displayed
    df <- 
      rbind(
        df,
        data.frame(x=rep(8:25), N=0)
      )
    
    p <-
      ggplot(df, aes(x=factor(x), y=N)) +
        geom_bar(
          stat="identity", width=1.0, 
          colour = "darkgreen",
          fill = 'lightslateblue'
      ) +
      scale_y_continuous( # <- set the limits for your y-axis
        limits = c( 0,50 )
      )
    
    p <- p +
      labs(title = "hello world", x = "x tick", y = "ytick") 
    p

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea