In R language package `ggmosaic`, how to add weight percent label to the columns

347 Views Asked by At

In package ggmosaic, how to add weight percent label to the columns ? I want to add the percent value of each column (every column totla percent equalt 100%). Thanks!

library(tidyverse)
library(ggmosaic)

ggplot(data = titanic) +
  geom_mosaic(aes(x = product(Class), fill = Survived)) +
  geom_mosaic_text(size=5,aes(x = product(Class), fill = Survived))
1

There are 1 best solutions below

2
On BEST ANSWER

you can use ggplot_build to calculate the percentage per class of each total count values like this:

library(tidyverse)
library(ggmosaic)

p <- ggplot(data = titanic) +
  geom_mosaic(aes(x = product(Class), fill = Survived)) +
  geom_mosaic_text(size=5,aes(x = product(Class), fill = Survived))

p + geom_text(data = ggplot_build(p)$data[[1]] %>% 
                group_by(x__Class) %>%
                mutate(pct = .wt/sum(.wt)*100), 
              aes(x = (xmin+xmax)/2, y = (ymin+ymax)/2, label=round(pct, 2)))

Created on 2022-12-22 with reprex v2.0.2