## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4.5 ) ## ----setup-------------------------------------------------------------------- library(ggplot2) library(marimekko) titanic <- as.data.frame(Titanic) ## ----basic-------------------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived) ## ----residuals---------------------------------------------------------------- ggplot(titanic) + geom_marimekko( aes( fill = Survived, weight = Freq, alpha = after_stat(abs(.residuals)) ), formula = ~ Class | Survived ) + scale_alpha_continuous(range = c(0.3, 1), guide = "none") + labs(title = "Residual shading: stronger opacity = larger deviation") ## ----residuals-colour--------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + geom_marimekko_text(aes( label = after_stat(round(.residuals, 1)) ), colour = "white", size = 3) + labs(title = "Pearson residuals as labels") ## ----multi-------------------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived | Sex ) + labs(title = "Nested mosaic: Class > Sex > Survived") ## ----fortify------------------------------------------------------------------ tiles <- fortify_marimekko(titanic, formula = ~ Class | Survived, weight = Freq ) head(tiles) ## ----fortify-3var------------------------------------------------------------- tiles_3 <- fortify_marimekko(titanic, formula = ~ Class | Survived | Sex, weight = Freq ) head(tiles_3) ## ----companion-layers--------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + geom_marimekko_text(aes( label = after_stat(paste(Class, Survived, weight, sep = "\n")) ), colour = "white", size = 2.5) ## ----fortify-custom----------------------------------------------------------- tiles <- fortify_marimekko(titanic, formula = ~ Class | Survived, weight = Freq ) # Highlight cells with significant residuals tiles$significant <- abs(tiles$.residuals) > 2 ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + geom_label( data = tiles[tiles$significant, ], aes(x = x, y = y, label = paste0("r=", round(.residuals, 1))), fill = "yellow", size = 3, fontface = "bold" ) + labs(title = "Significant deviations from independence (|r| > 2)") ## ----stat-tiles-bubble-------------------------------------------------------- ggplot(titanic) + geom_marimekko( aes(fill = Survived, weight = Freq), formula = ~ Class | Survived, alpha = 0.4 ) + layer( stat = StatMarimekkoTiles, geom = GeomPoint, mapping = aes(size = after_stat(weight)), data = titanic, position = "identity", show.legend = FALSE, inherit.aes = FALSE, params = list(colour = "white", alpha = 0.7) ) + scale_size_area(max_size = 12) + labs(title = "Bubble overlay via StatMarimekkoTiles") ## ----stat-tiles-residuals----------------------------------------------------- ggplot(titanic) + geom_marimekko( aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + layer( stat = StatMarimekkoTiles, geom = GeomPoint, mapping = aes( size = after_stat(abs(.residuals)), colour = after_stat(ifelse(.residuals > 0, "over", "under")) ), data = titanic, position = "identity", show.legend = TRUE, inherit.aes = FALSE, params = list(alpha = 0.8) ) + scale_colour_manual( values = c(over = "tomato", under = "steelblue"), name = "Deviation" ) + scale_size_continuous(range = c(1, 8), name = "|Residual|") + labs(title = "Residual markers via StatMarimekkoTiles") ## ----stat-tiles-rect---------------------------------------------------------- ggplot(titanic) + geom_marimekko( aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + layer( stat = StatMarimekkoTiles, geom = GeomRect, mapping = aes( linewidth = after_stat(ifelse(abs(.residuals) > 2, 1.5, 0)) ), data = titanic, position = "identity", show.legend = FALSE, inherit.aes = FALSE, params = list(colour = "red", fill = NA) ) + labs(title = "Highlight tiles with |residual| > 2") ## ----combined----------------------------------------------------------------- ggplot(titanic) + geom_marimekko( aes( fill = Survived, weight = Freq, alpha = after_stat(abs(.residuals)) ), formula = ~ Class | Survived, show_percentages = TRUE ) + geom_marimekko_text(aes(label = after_stat(weight)), colour = "white", size = 3.5 ) + scale_alpha_continuous(range = c(0.4, 1), guide = "none") + theme_marimekko() + labs( title = "Full-featured mosaic plot", subtitle = "Residual shading + counts + marginal %" ) ## ----gap-xy------------------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived, gap_x = 0.04, gap_y = 0 ) + labs(title = "Wide column gaps, no vertical gaps") ## ----gap-xy2------------------------------------------------------------------ ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived, gap_x = 0, gap_y = 0.03 ) + labs(title = "No column gaps, visible vertical gaps") ## ----palette------------------------------------------------------------------ ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived ) + theme_marimekko() + labs(title = "Earthy Nordic palette") ## ----colour-override---------------------------------------------------------- ggplot(titanic) + geom_marimekko(aes(fill = Survived, weight = Freq), formula = ~ Class | Survived, colour = "white" ) + theme_marimekko() + labs(title = "White borders with marimekko palette") ## ----plotly, eval = FALSE----------------------------------------------------- # library(plotly) # # p <- ggplot(titanic) + # geom_marimekko(aes(fill = Survived, weight = Freq), # formula = ~ Class | Survived # ) # ggplotly(p) ## ----in-aes------------------------------------------------------------------- # Expressions work in formulas ggplot(mtcars) + geom_marimekko(formula = ~ factor(cyl) | factor(gear)) + labs( y = "Gears", fill = "Gears", title = "factor() inside formula works" )