varias stat_bin histograms graficas ggplot cool beautiful r ggplot2 histogram

histograms - stat_bin



Necesidad de extraer datos del ggplot geom_histogram (2)

Hola, he hecho una gráfica usando la función ggplot2 geom_histogram de un marco de datos. Vea la muestra a continuación y vincule al histograma ggplot. Necesite etiquetar cada geom_vline con los factores usando una función ddply anidada y un ajuste de facetas.

Ahora necesito hacer un marco de datos que contenga los datos resumidos utilizados en el diagrama anterior. ¿Alguien puede ayudar? Gracias por adelantado. GRAMO

Sector2 Family Year Length BUN Acroporidae 2010 332.1300496 BUN Poritidae 2011 141.1467966 BUN Acroporidae 2012 127.479 BUN Acroporidae 2013 142.5940556 MUR Faviidae 2010 304.0405 MUR Faviidae 2011 423.152 MUR Pocilloporidae 2012 576.0295 MUR Poritidae 2013 123.8936667 NTH Faviidae 2010 60.494 NTH Faviidae 2011 27.427 NTH Pocilloporidae 2012 270.475 NTH Poritidae 2013 363.4635


Para obtener los valores realmente trazados, puede usar la función ggplot_build() donde argumento es su trazado.

p <- ggplot(mtcars,aes(mpg))+geom_histogram()+ facet_wrap(~cyl)+geom_vline(data=data.frame(x=c(20,30)),aes(xintercept=x)) pg <- ggplot_build(p)

Esto hará que la lista y una de las sublistas se denomine data . Esta sublista contiene el marco de datos con los valores utilizados en la trama, por ejemplo, para histrogramm contiene valores y (igual que el count ). Si usa facetas, la columna PANEL muestra en qué valores de faceta se utilizan. Si hay más de un geom_ en su trazado, los datos contendrán marcos de datos para cada uno; en mi ejemplo, hay un marco de datos para histogramm y otro para vlines.

head(pg$data[[1]]) y count x ndensity ncount density PANEL group ymin ymax 1 0 0 9.791667 0 0 0 1 1 0 0 2 0 0 10.575000 0 0 0 1 1 0 0 3 0 0 11.358333 0 0 0 1 1 0 0 4 0 0 12.141667 0 0 0 1 1 0 0 5 0 0 12.925000 0 0 0 1 1 0 0 6 0 0 13.708333 0 0 0 1 1 0 0 xmin xmax 1 9.40000 10.18333 2 10.18333 10.96667 3 10.96667 11.75000 4 11.75000 12.53333 5 12.53333 13.31667 6 13.31667 14.10000 head(pg$data[[2]]) xintercept PANEL group xend x 1 20 1 1 20 20 2 30 1 1 30 30 3 20 2 2 20 20 4 30 2 2 30 30 5 20 3 3 20 20 6 30 3 3 30 30


Si solo necesita datos, parece que layer_data está diseñado precisamente para esto:

layer_data(p, 1)

le dará los datos de la primera capa ( ggplot_build(p)$data[[1]] como ggplot_build(p)$data[[1]] )