如何在ggplot2的geom_mosaic()中手动设置Y轴分类颜色?
解决ggplot2马赛克图按Y轴分类自定义颜色的问题
你当前的代码是按Z轴(X/Y/Z)分类填充颜色,要实现按Y轴A/B/C/D/E/F分类手动指定颜色,只需调整填充映射和颜色设置方式:
修改后的代码
bd <- data.frame(x = c(120,5,15,5,20,100, 400,15,50,80,45,410, 250,15,75,35,40,250), y = rep(c("A", "B", "C", "D", "E", "F"), 3), z = c(rep("X",6),rep("Y",6),rep("Z",6))) bd$weight = bd$x/sum(bd$x) # 自定义Y轴各分类的颜色,可按需替换 custom_colors <- c( "A" = "#1f77b4", "B" = "#ff7f0e", "C" = "#2ca02c", "D" = "#d62728", "E" = "#9467bd", "F" = "#8c564b" ) ggplot(bd) + geom_mosaic(aes(x = product(y, z), fill = y, weight = weight), offset = 0.015) + scale_fill_manual(values = custom_colors) + theme_mosaic()
关键修改说明
- 将
aes中的fill = z改为fill = y,让图形填充依据Y轴的A-F分类 - 用
scale_fill_manual()替代scale_fill_brewer(),通过values参数传入自定义颜色向量,每个Y轴分类对应指定颜色 - 颜色值可以用十六进制色码、RGB值或R内置颜色名称,完全按需自定义
这样修改后,马赛克图就会按照Y轴的A/B/C/D/E/F分类显示你指定的颜色,和目标示例的效果一致。
内容的提问来源于stack exchange,提问作者Bileobio
相关产品推荐
相关产品推荐

