Tengo pregunta probablemente similar a la El ajuste de una curva de densidad de un histograma en R. El uso de qplot he creado 7 histogramas con este comando:

 (qplot(V1, data=data, binwidth=10, facets=V2~.)   

Para cada sector, me gustaría añadir un accesorio curva gaussiana. Cuando trato de usar lines() método, me sale error:

Error in plot.xy(xy.coords(x, y), type = type, ...) : 
plot.new has not been called yet

¿Cuál es el comando para hacerlo correctamente?

  • No se puede mezclar la base de gráficas de funciones (lines() etc) con rejilla de gráficos como el usado por el gpplot2 y celosía paquetes.
InformationsquelleAutor mkk | 2011-08-24

2 Comentarios

  1. 14

    ¿Has probado stat_function?

    + stat_function(fun = dnorm)

    Usted probablemente querrá trama de los histogramas usando aes(y = ..density..) con el fin de determinar los valores de densidad en lugar de la cuenta.

    Una gran cantidad de información útil que se puede encontrar en este que se trate, incluyendo algunos consejos sobre el trazado diferentes curvas normales en diferentes facetas.

    Aquí están algunos ejemplos:

    dat <- data.frame(x = c(rnorm(100),rnorm(100,2,0.5)), 
                      a = rep(letters[1:2],each = 100))

    Superposición de una sola densidad normal en cada faceta:

    ggplot(data = dat,aes(x = x)) + 
      facet_wrap(~a) + 
        geom_histogram(aes(y = ..density..)) + 
        stat_function(fun = dnorm, colour = "red")

    Cómo agregar curva gaussiana para el histograma creado con qplot?

    De la pregunta he ligado, crear un marco de datos con las diferentes curvas normales:

    grid <- with(dat, seq(min(x), max(x), length = 100))
    normaldens <- ddply(dat, "a", function(df) {
      data.frame( 
        predicted = grid,
        density = dnorm(grid, mean(df$x), sd(df$x))
      )
    })

    Y parcela por separado utilizando geom_line:

    ggplot(data = dat,aes(x = x)) + 
        facet_wrap(~a) + 
        geom_histogram(aes(y = ..density..)) + 
        geom_line(data = normaldens, aes(x = predicted, y = density), colour = "red")

    Cómo agregar curva gaussiana para el histograma creado con qplot?

    • soy muy principiante en R, solo que por unos días. Voy a echar un vistazo, gracias por la sugerencia!
    • Muito Bom! Me ajudou horrores!!!!
  2. 5

    ggplot2 utiliza un tipo diferente de gráficos paradigma de base de gráficos. (Aunque se puede usar grid gráficos con él, la mejor manera es agregar un nuevo stat_function capa a la trama. El ggplot2 código es el siguiente.

    Nota de que no podía conseguir que esto funcione, el uso de qplot, pero la transición a la ggplot es razonablemente straighforward, la diferencia más importante es que sus datos debe ser en los datos.formato de trama.

    Nota también de la asignación explícita de la y estética aes=aes(y=..density..)) – esto es un poco inusual, pero lleva la stat_function resultados y la asigna a los datos:

    library(ggplot2)
    data <- data.frame(V1 <- rnorm(700), V2=sample(LETTERS[1:7], 700, replace=TRUE))
    ggplot(data, aes(x=V1)) + 
      stat_bin(aes(y=..density..)) + 
      stat_function(fun=dnorm) + 
      facet_grid(V2~.)

    Cómo agregar curva gaussiana para el histograma creado con qplot?

Dejar respuesta

Please enter your comment!
Please enter your name here