r - How to create a Marimekko/Mosaic plot in ggplot2 -


the marimekko/mosaic plot nice default plot when both x , y categorical variables. best way create these using ggplot?

example

the reference find 4yo blog post seems bit outdated. there better or easier implementations avaialable now? ggally package has function ggally_ratio produces quite different:

ggally

i did myself time ago, using geom_bar, turned general function should work on 2 factors. enter image description here

ggmmplot <- function(var1, var2){   require(ggplot2)   levvar1 <- length(levels(var1))   levvar2 <- length(levels(var2))    jointtable <- prop.table(table(var1, var2))   plotdata <- as.data.frame(jointtable)   plotdata$marginvar1 <- prop.table(table(var1))   plotdata$var2height <- plotdata$freq / plotdata$marginvar1   plotdata$var1center <- c(0, cumsum(plotdata$marginvar1)[1:levvar1 -1]) +     plotdata$marginvar1 / 2    ggplot(plotdata, aes(var1center, var2height)) +     geom_bar(stat = "identity", aes(width = marginvar1, fill = var2), col = "black") +     geom_text(aes(label = as.character(var1), x = var1center, y = 1.05))    }  ggmmplot(diamonds$cut, diamonds$clarity) 

Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -