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

如何在R Markdown中设置base graphics的默认字体?

问题:R Markdown(HTML输出)中设置base graphics默认字体不生效

我想在R Markdown的HTML输出里设置base graphics的默认字体,用par(family = "monospace")设置后发现不生效,但在终端直接执行这个设置却能正常工作。显式在绘图函数里指定family参数是有效的,但全局设置就是不行。

我的R Markdown文档结构如下:

---                                                                                
title: "Setting font in par"                                                       
output: html_document                                                              
---                                                                                

尝试设置默认字体的代码:

par(family = "monospace")                                                          

执行绘图时,R Markdown渲染出的图不使用设置的字体,但终端里执行却正常:

plot(1:10, main = "title") # R Markdown渲染输出未使用正确字体,但终端执行正常                         

显式指定字体则可以正常工作:

plot(1:10, main = "title", family = "monospace")                                   
解决方案

出现这个问题的核心原因是:R Markdown中每个代码块默认运行在独立环境里,par()的设置只对当前代码块有效,后续代码块会重置图形参数。要实现全局生效,有几种可行的方法:

方法1:将参数设置和绘图放在同一个代码块

把par()设置和绘图代码放在同一个代码块中,参数设置会直接作用于后续绘图:

par(family = "monospace")
plot(1:10, main = "title") # 此时会使用monospace字体

方法2:使用setup代码块全局设置

在R Markdown中,命名为setup的代码块(加上echo=FALSE避免输出)会在所有代码块之前运行,且其环境会被后续代码块继承。可以在这里设置全局图形参数:

# 全局设置base graphics的默认字体
par(family = "monospace")

之后的任意代码块绘图都会自动使用这个字体:

plot(1:10, main = "title") # 设置生效

方法3:指定图形设备的默认字体

另一种更可靠的方式是直接设置图形设备的默认字体,所有通过该设备生成的图都会自动使用指定字体。对于HTML输出常用的png设备,可以这样设置:

options(device = function(...) {
  grDevices::png(..., family = "monospace")
})

这种方法不受代码块环境的影响,全局生效更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:22:35