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

如何将R语言mosaicplot单元格内标签居中并添加p值与图例?

实现带计数百分比、p值和图例的马赛克图

base R自带的mosaicplot功能有限,要实现你需要的单元格居中显示计数+百分比、添加图例和p值的效果,推荐使用vcd包的mosaic()函数,它专门用于可视化列联表,功能更灵活。

完整实现代码

# 安装并加载vcd包(首次使用需安装)
install.packages("vcd")
library(vcd)

# 构建数据矩阵
mosaictable <- matrix(c(3, 9, 22, 21), byrow = TRUE, ncol = 2)
rownames(mosaictable) <- c("White", "Blue")
colnames(mosaictable) <- c("Captured", "Not Captured")

# 计算卡方检验的p值(用于统计显著性展示)
chisq_result <- chisq.test(mosaictable)
p_val <- round(chisq_result$p.value, 4)

# 绘制增强版马赛克图
mosaic(mosaictable,
       main = paste("Mosaic Plot of Pigeon Color and Capture Rate\np-value =", p_val),
       sub = "Pigeon Color",
       ylab = "Relative frequency",
       col = c("firebrick", "goldenrod1"),
       font = 2,
       # 配置单元格标签:显示计数+百分比并居中
       labeling_args = list(
         labels = list(
           counts = TRUE,
           percents = TRUE,
           # 自定义标签格式:计数 + 换行 + 行百分比(也可改为总百分比)
           fun = function(x) paste0(x, "\n", round(100 * x / sum(x), 1), "%")
         ),
         just = "center"  # 标签居中对齐
       ),
       legend = TRUE  # 自动添加颜色对应分组的图例
)

关键功能说明

  • 单元格标签:通过labeling_args设置counts = TRUE显示原始计数,percents = TRUE结合自定义fun生成百分比,just = "center"让标签居中。
  • p值添加:先通过chisq.test()计算列联表的卡方检验p值,再将其嵌入到图标题中,直观展示统计关联的显著性。
  • 图例:设置legend = TRUE即可自动生成对应行分组(White/Blue)的颜色图例,无需手动绘制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:33:27