Estoy tratando de obtener una gráfica de densidad para mostrar el porcentaje de conteo por el número total en cada faceta.

Por ejemplo, tengo este gráfico de densidad: gráfico de densidad

Producida por este código:

ggplot(data, aes(x = 'ratio'))                 

+ geom_histogram(aes(y = '..density..'),
                  binwidth = 0.5,                   
                  na_rm = True,                        
                  alpha = 0.8)                         

 + geom_vline(xintercept = 1, colour = 'red', linetype = 'dashed', size = 0.5)  # add a red vertical line
 
 + facet_grid('industry ~ state')              

 + labs(x = 'ratio', y = 'density')

 + scale_x_continuous(breaks = [0,1,2], labels = ['0','1','2'])    

 + theme(strip_text_y = element_text(angle = 0,         # angle text in y-fact (industry names)
                                     ha = 'left'),      # left alignment
         strip_background_y = element_text(width = 2.5),# change width of the grey box (on y)
         strip_background_x = element_text(width = 1),
         figure_size=(5, 5))     

Como puede ver, la altura de las columnas no se suma a 1.

¿Cómo asegurarse de que la altura de cada columna corresponda al porcentaje de recuento de cada faceta?

Por ejemplo, utilizando la faceta (NSU, construcción) como ejemplo. Esto es ahora una parcela de conteo:

Frequency plot

La suma en la faceta NSW / Construction es 3760. El recuento en la 1ra, 2da ... 5ta columna son 350, 950, 1630,630 y 200 respectivamente. Quiero que se muestren las columnas para:

  • 1ra columna = 350/3760 = 9%
  • 2da columna = 950/3760 = 25 %%
  • 3ra columna = 1630/3760 = 43%
  • Cuarta columna = 630/3760 = 17%
  • 5ta columna = 200/3760 = 5%

Intenté usar aes(y='..count../sum(..count..)'), pero eso me dio un recuento de toda la población , no de la población dentro de cada faceta .

Por favor, ayúdeme.

0
BEN 20 jul. 2020 a las 06:32

1 respuesta

La mejor respuesta

Use aes(y=stat(width*density)).

Obtuve la idea de una publicación en ggplot2 de R, que es en lo que se basa plotnine. https://github.com/tidyverse/ggplot2/issues/2499

0
BEN 20 jul. 2020 a las 04:36