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

在R Markdown Word文档中压缩ggplot柱状图长度并保证可读性

解决R Markdown生成Word时ggplot图表尺寸压缩且避免标签截断的问题

要在R Markdown生成的Word文档中得到类似Excel的12cm×5cm紧凑且可读的图表,需要同时调整ggplot内部元素布局和R Markdown代码块参数,避免单纯调整尺寸导致的标签截断问题。以下是修改方案:

核心改动说明

  • 单位转换:ggplot默认用英寸,12cm≈4.72英寸、5cm≈1.97英寸,在代码块中设置对应尺寸
  • 主题优化:缩小元素字号、调整x轴标签角度、减少冗余边距,适配小尺寸图表
  • 文本调整:微调标签位置和大小,避免超出图表范围
  • 双Y轴简化:缩短标题,保证紧凑性

修改后的完整代码

library(tidyverse)
library(scales)
library(patchwork)
options(scipen = 999)

df <- tribble(
  ~category, ~ numbers, ~value,
  "category 1",8,   9901020,
  "category 2",8    ,18629623,
  "category 3",9    ,16471680,
  "category 4",7    ,13661732,
  "category 5",5    ,7173011,
  "category 6",10,  18395574)

dfmod <- df %>%
  dplyr::mutate(numbers_lable = numbers,
                numbers = numbers * 1e6) 

pl <- ggplot(data = dfmod,aes(x= fct_reorder(category,desc(value)), y = value)) +
  geom_col(fill = "grey") +
  geom_line(aes(y = numbers, group = 1), size = .8, color = "blue") +
  # 微调标签位置和字号,避免顶部截断
  geom_text(aes(label = paste0('Sales ', scales::comma(value), '\n(Orders ', numbers_lable,')')),
            vjust = -0.2, size = 2.5) +
  scale_y_continuous(name= "Sales revenue"
                     ,labels = scales::comma_format(scale = 1e-6, suffix = "M")
                     , sec.axis = sec_axis( trans= ~./1e6
                                            , name = "Orders"  # 简化右侧Y轴标题
                                            , breaks = c(0,2,4,6,8,10))) +
  theme_bw() +
  theme(
    # 统一缩小文本字号适配小尺寸
    axis.title = element_text(size = 9),
    axis.text = element_text(size = 8),
    # 旋转x轴标签避免重叠
    axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1),
    # 减少图表内外边距,压缩空间
    plot.margin = margin(5, 5, 5, 5, "pt"),
    panel.spacing = unit(1, "pt"),
    axis.title.y = element_text(color = "grey"),
    axis.title.y.right = element_text(color = "blue")
  )

pl

R Markdown代码块设置

在R Markdown中使用以下参数,确保输出精确的12cm×5cm清晰图表:

# 上述ggplot代码放在此处

额外提示

  • dpi=300保证Word中图表的清晰度,避免模糊
  • 若仍有标签截断,可进一步微调geom_text的size或plot.margin数值
  • 实际输出后可根据Word中的显示效果,再调整字号或位置参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:40:43