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

R语言中能否在同一画布内合并多个plotrix包的pie3D图表?

R合并plotrix包三维饼图的实现方案

pie3D属于R基础绘图体系函数,不依赖ggplot生态,使用R自带的基础绘图排版工具即可将多张子图合并到同一画布,不需要调用ggplot系的ggarrange工具,以下是两种可直接复用的实现方式:

方案1:par()参数快速规整排版

这是最简便的多子图排布方式,适合等宽等高的规整行列布局:

  • 绘图前调用par()设置画布拆分规则,mfrow = c(行数, 列数)参数可将画布拆分为对应行列的网格,子图按行顺序依次填充
  • 按顺序运行三个已写好的pie3D()绘图代码即可自动排布
  • 可通过mar参数调整每个子图的边距,避免标题、标签被截断
  • 绘图完成后需恢复默认绘图参数,避免影响后续绘图操作

可直接参考以下示例代码,将模拟数据替换为自身的真实人口数据即可:

library(plotrix)
# 以下为模拟演示数据,替换为实际使用的分组占比数据
total_data <- c(48, 52)
adult_data <- c(62, 38)
child_data <- c(55, 45)

# 保存原始绘图参数,设置1行3列的排版
origin_par <- par(mfrow = c(1, 3), mar = c(2, 2, 3, 2))
# 依次绘制三张三维饼图
pie3D(total_data, labels = c("男性", "女性"), main = "总体人口构成")
pie3D(adult_data, labels = c("男性", "女性"), main = "成年群体构成")
pie3D(child_data, labels = c("男性", "女性"), main = "儿童群体构成")
# 恢复原始绘图参数
par(origin_par)

方案2:layout()函数自定义灵活排版

如果需要非均匀的布局(比如第一张总体人口图占更大展示面积,后两张图尺寸更小),可以使用layout()函数自定义排版规则,通过矩阵定义每个子图的位置和占比,灵活度更高。
比如实现“左侧大图占2行高度,右侧上下排列两张小图”的布局,参考代码如下:

library(plotrix)
# 定义排版矩阵,数字对应子图序号
layout_matrix <- matrix(c(1, 1, 2,
                          1, 1, 3), nrow = 2, byrow = TRUE)
# 应用排版规则
layout(mat = layout_matrix)
# 按序号依次绘图
pie3D(total_data, labels = c("男性", "女性"), main = "总体人口构成")
pie3D(adult_data, labels = c("男性", "女性"), main = "成年群体构成")
pie3D(child_data, labels = c("男性", "女性"), main = "儿童群体构成")
# 恢复默认单图排版
layout(1)

提示:如果操作后忘记重置绘图参数,直接重启R会话即可恢复默认的单图绘图模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:12:24