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

Jupyter中R绘图文本乱码问题(安装Cairo包后)

解决Jupyter+R环境加载Cairo包后绘图文本乱码问题

核心问题定位

Jupyter的R交互式环境中,Cairo包与内核默认的绘图设备在字体渲染逻辑上存在冲突,导致文本显示乱码;而终端R环境、导出静态文件(pdf/png)或卸载Cairo后,使用的是独立的绘图设备,因此能正常渲染文本。

可行解决方案

  • 强制使用非Cairo绘图设备
    在Jupyter的R会话中,全局设置默认设备为系统原生的png/jpeg设备,避开Cairo的冲突:

    options(device = "png")
    

    或者绘图时显式指定设备:

    png(file = "test_plot.png")
    plot(1:10, main = "中文测试标题")
    dev.off()
    
  • 为Cairo指定系统兼容的中文字体
    加载Cairo后,手动配置支持中文的字体(Linux下可通过fc-list命令查看系统已安装字体列表,替换为实际存在的字体):

    library(Cairo)
    # 示例:使用Noto Sans CJK SC字体,根据你的系统调整
    CairoFonts(
      regular = "Noto Sans CJK SC:style=Regular",
      bold = "Noto Sans CJK SC:style=Bold",
      italic = "Noto Sans CJK SC:style=Italic"
    )
    
  • 仅在非Jupyter环境加载Cairo
    修改R的启动脚本~/.Rprofile,添加条件判断,避免在Jupyter中自动加载Cairo:

    # 检测是否处于Jupyter环境
    if (!identical(Sys.getenv("JUPYTER"), "1")) {
      library(Cairo)
    }
    
  • 修改Jupyter R内核配置
    检查R内核的配置文件(路径通常为~/.local/share/jupyter/kernels/ir/kernel.json),如果存在--device=cairo参数,将其删除,避免内核强制使用Cairo设备:

    // 修改前可能包含的参数
    "args": ["--no-save", "--no-restore", "--device=cairo"]
    // 修改后
    "args": ["--no-save", "--no-restore"]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:12:08