使用ggplot与gridExtra组合图表表格的优化方案及数字格式控制求助
优雅实现图表与表格组合并控制数字位数的方案
核心优化思路
- 无需将
tibble转为data.frame,直接通过dplyr语法完成数字格式化 - 保持代码的tidy风格,简化流程同时提升可读性
- 直接用格式化后的
tibble生成表格Grob对象
完整代码示例
library(tidyverse) library(gridExtra) # 生成数据 ddd <- bind_cols(runif(5, 0, 1), runif(5, 0, 1)) |> set_names(c("yo", "hi")) # 格式化数字并生成表格Grob(无需转data.frame) table_grob <- ddd |> mutate(across(everything(), ~ format(., digits = 1))) |> tableGrob() # 绘制散点图 plot <- ggplot(data = ddd) + geom_point(aes(x = yo, y = hi)) # 组合图表与表格 grid.arrange(plot, table_grob, layout_matrix = rbind(c(1, 2)))
关键步骤说明
- 数字位数控制:用
mutate(across(everything(), ~ format(., digits = 1)))直接对tibble的所有列进行格式化,一步到位,省去类型转换步骤 - 表格Grob生成:格式化后的
tibble可直接传入tableGrob(),无需额外处理 - 布局组合:保留原有的
layout_matrix方式,灵活调整图表与表格的排列比例
内容的提问来源于stack exchange,提问作者olybear82
相关产品推荐
相关产品推荐

