当 x 和 y 都是分类变量时,Marimekko/Mosaic 图是一个很好的默认图。使用 ggplot 创建这些的最佳方法是什么?
我能找到的唯一参考资料是这个 4yo博客文章但这似乎有点过时了。现在有更好或更简单的实现吗? GGally包有一个功能ggally_ratio
但这会产生完全不同的东西:
I did it myself a time ago, using just geom_bar
, I turned it into a general function so it should work on any two factors
.
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)