Próbuję uzyskać działkę gęstości, aby pokazać procent liczenia przez całkowitą liczbę w każdym aspekcie.

Na przykład mam ten działek gęstości: Działka gęstości

Produkowany przez ten kod:

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))     

Jak widać, wysokość kolumn nie sumuje się do 1.

Jak upewnić się, że wysokość każdej kolumny odpowiada procentowi liczenia każdego aspekt.

Na przykład za pomocą Facet (NSW, Budownictwo) jako przykład. To teraz działka liczy:

Frequency plot

Suma w Facet NSW / Construction to 3760. Liczba w pierwszej, drugiej kolumnie wynosi odpowiednio 350, 950, 1630 630 i 200, chcę pokazać kolumny na pokazanie:

  • 1. kolumna = 350/3760 = 9%
  • 2nd kolumna = 950/3760 = 25 %%
  • 3rd kolumna = 1630/3760 = 43%
  • 4. kolumna = 630/3760 = 17%
  • 5. Kolumna = 200/3760 = 5%

Próbowałem użyć aes(y='..count../sum(..count..)'), ale to dało mi liczyć ponad całej populacji , a nie populacji w każdym aspekcie .

Proszę pomóż.

0
BEN 20 lipiec 2020, 06:32

1 odpowiedź

Najlepsza odpowiedź

Użyj aes(y=stat(width*density)).

Mam pomysł na post na Ggplom2 R, co jest oparte na Plotnine. https://github.com/tidyverse/gglot2/issues/2499

0
BEN 20 lipiec 2020, 04:36