如何通过R Markdown将ggplot2图形正确渲染导出至Word文档?
问题原因
这个问题本质是R Markdown默认输出到Word的图片尺寸不足以容纳50个分面的可视化内容,图形被压缩后就会出现轴标签重叠、条形丢失的问题,RStudio预览时可手动拉伸画布所以显示正常。
可行解决方案
方案1:调整代码块的输出图片参数
在绘图代码块的头部添加fig.width、fig.height、dpi参数,放大输出画布尺寸适配多分分面的显示需求,示例配置如下:{r, fig.width=14, fig.height=20, dpi=300} # 绘图代码放在该代码块内14英寸宽、20英寸高的画布足够容纳50个分面的内容,300dpi也能保证打印清晰度,插入Word后可以手动缩放整体图片大小,不会影响内部元素的比例。
方案2:手动指定分面排列规则
修改facet_wrap参数,手动指定行列数让布局更规整,避免默认布局过度挤压:facet_wrap(~a, nrow = 5, ncol = 10) # 5行10列排列50个分面方案3:减少Y轴刻度数量
在scale_y_continuous中指定刻度间隔,减少重叠概率:scale_y_continuous(limits= c(0, 600), breaks = seq(0, 600, 200))
修改后的完整代码示例
--- title: "test" author: "Philipp" date: "20 10 2021" output: word_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)
R Markdown
library(tidyverse) library(ggrepel) a <- rep(1:50, 200) b <- sample(x= c("a", "b", "c", "d", "e"), size= 100000, replace= TRUE) c <- rep(1000:1049, 200) df <- data.frame(a,b,c) ggplot(df, aes(x= b)) + geom_bar() + scale_y_continuous(limits= c(0, 600), breaks = seq(0,600,200)) + facet_wrap(~a, nrow = 5, ncol = 10)+ geom_text( data=df, x=4.5, y=550, aes(label=c), size= 3 )
## 异常效果参考  内容的提问来源于stack exchange,提问作者Philipp Schulz
相关产品推荐
相关产品推荐

