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

ggmosaic图标签优化:布局调整与自定义标注技术问询

多分类马赛克图标签与间距调整问题

ggmosaic在展示多分类数据时灵活性较强,但标签调整存在不少难点。

示例数据

dat = data.frame(
    Correct=c('no','yes','no','yes','no','yes','no','yes',
        'no','yes','no','yes','no','yes','no','yes'),
    Type=c('A','A','B','B','A','A','B','B',
        'A','A','B','B','A','A','B','B'),
    Level=c('1st','1st','1st','1st','2nd','2nd','2nd','2nd',
        '1st','1st','1st','1st','2nd','2nd','2nd','2nd'),
    Class=c('X','X','X','X','X','X','X','X',
        'Y','Y','Y','Y','Y','Y','Y','Y'),
    Percent=c(69.98,30.02,71.17,28.83,42.17,57.83,69.47,30.53,
        18.68,81.32,26.92,73.08,13.48,86.52,22.65,77.35)
)

基础马赛克图代码

require(ggplot2)
require(ggmosaic)
require(ggthemes)

mosaic1 <- ggplot(data=dat) +
    geom_mosaic(aes(weight=Percent, 
        x=product(Type, Level),
        conds=product(Class),
        fill=Correct)) +
    scale_fill_manual(values=c('#b2182b','#1b7837')) +
    ggtitle('TITLE') +
    theme_tufte(base_family='sans') +
    theme(axis.text.x=element_text(angle=45, hjust=1, vjust=1, size=10),
        axis.title=element_text(size=11),
        legend.text=element_text(size=10),
        legend.title=element_text(size=11))
mosaic1

需求说明

  • 调整面板与图例的间距,使轴标签(Correct:Level)与面板间留出更多空白;
  • 使用annotate()在对应堆叠条的中点添加'1st'和'2nd'标签,但目前无法找到合适的x、y坐标值。

内容的提问来源于stack exchange,提问作者striatum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:33:38