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

如何在R中将多个独立图表输出到同一个PDF文件中

R语言多条形图合并输出PDF解决方案

原有代码错误点

  • 语法缺失:sapply()函数未补充右闭合括号,运行直接抛出语法错误
  • 逻辑不匹配:你单个条形图的输入是命名向量,但循环内的代码是针对数据框做切片、转置操作,和你实际的数据结构完全不兼容
  • 未定义变量:循环内用到的sp、barcols都没有提前赋值,运行会提示对象未找到
  • 参数设置错误:单图的y轴范围为0-50,循环内误写为0-0.4,就算跑通也看不到条形
  • 遗漏设备关闭命令:R中打开PDF图形设备后必须执行dev.off(),否则输出的PDF文件是损坏/空白的

最简可运行实现

你所有图表逻辑一致,直接用par(mfrow)设置布局+循环绘图即可,完全不需要复杂的矩阵转换,适合初学者使用:

# ---------------------- 第一步:提前准备你的6组数据和对应标题 ----------------------
# 替换下面的data2~data6为你剩余5个图的实际数据源变量名
plot_datalist <- list(
  druhy,
  data2,
  data3,
  data4,
  data5,
  data6
)
# 替换下面的标题为你6个图的实际主标题,顺序和上面的数据一一对应
plot_titles <- c(
  "Míváš často chuť na svíčkovou?",
  "你的第2个图表标题",
  "你的第3个图表标题",
  "你的第4个图表标题",
  "你的第5个图表标题",
  "你的第6个图表标题"
)
# 统一的配色和图例,你所有图通用
bar_cols <- c("red", "blue", "green", "black", "yellow")
legend_text <- c("ano", "spíše ano", "nevím", "spíše ne", "ne")

# ---------------------- 第二步:设置PDF输出和布局 ----------------------
# 打开PDF设备,可自行调整width和height适配排版
pdf("6_barplots_output.pdf", width = 10, height = 14)
# 设置3行2列的图表布局,mar参数调整边距避免标题、图例被截断
par(mfrow = c(3, 2), mar = c(4, 4, 3, 2))

# ---------------------- 第三步:循环绘制所有图表 ----------------------
for (i in seq_along(plot_datalist)) {
  # 直接用你原本的单图绘图逻辑,不需要修改
  barplot(plot_datalist[[i]],
          ylim = c(0, 50), # 可根据你的数据最大值自行调整,比如最大数值是10就设为0-15
          main = plot_titles[i],
          col = bar_cols)
  # 添加图例,cex参数缩小图例避免占太多空间
  legend("topleft", legend = legend_text, fill = bar_cols, cex = 0.8)
}

# ---------------------- 第四步:关闭PDF设备,必须执行! ----------------------
dev.off()

运行完成后你工作目录下就会生成包含6个3行2列排布条形图的PDF文件。

内容的提问来源于stack exchange,提问作者Hana Liškařová

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:18:02