You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:22:18