Knitting含ggplot的RMarkdown报pandoc错误99 找不到figure-html路径
ggplot2折线图knit渲染失败排查方案
问题根因
报错File ANAL_files/figure-html/ not found in resource path的核心原因有两个:
- ggplot代码写法不规范,依赖全局环境变量,knit独立运行环境下无法稳定生成图形
- R Markdown输出配置错误,knitr没有创建HTML渲染需要的
figure-html图形存放目录,反而生成了适配github markdown的figure.gfm目录,导致pandoc找不到对应资源终止渲染。
修复步骤
1. 修正ggplot代码写法
你当前代码单独把数据框列复制为全局变量t、z再传入aes映射,控制台运行时可以从全局环境找到变量正常出图,但knit渲染时每个代码块运行在独立隔离环境,这种写法极易触发变量找不到的错误,导致图形生成失败。删掉多余的变量复制步骤,直接在aes里引用数据框列即可,修正后完整代码:
# 记得在代码块内显式加载依赖包,不要仅在控制台加载 library(readr) library(ggplot2) ## line graph to show rate of installs over time - last 50years installs_per_year_50years <- read_csv("installs_per_year_50years.csv", col_types = cols(year = col_date(format = "%Y-%m-%d"))) plot_installs_over_50 <- ggplot(installs_per_year_50years, aes(x = year, y = installs, group = 1)) + geom_line(color = "red", stat = "identity") + labs( title = "Number of New Public Art Installations per Year", subtitle = "Including installations outside of the areas and those in multiple areas", x = "Year", y = "New Public Art" ) + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + scale_y_continuous(breaks = seq(0, 75, by = 5)) + theme(axis.text.x = element_text(size = 6, angle = 90)) plot_installs_over_50
注意:
readr、ggplot2等依赖包必须在Rmd的代码块中通过library()加载,仅在控制台加载包时,knit环境无法识别对应函数。
2. 修正R Markdown输出配置
仅生成figure.gfm文件夹说明你当前Rmd文件头部的YAML配置错误,误将输出格式设置为了GitHub Flavored Markdown,而非HTML。打开Rmd文件,将最开头的YAML块替换为标准HTML输出配置:
--- title: "公共艺术安装量分析" output: html_document ---
配置修改完成后,先手动删除项目目录下之前生成的ANAL_files文件夹、ANAL.knit.md中间缓存文件,避免旧文件干扰渲染。
如果修正YAML后仍然报错,就在Rmd文件的第一个代码块中添加knitr配置,强制指定图形输出路径:
knitr::opts_chunk$set( fig.path = "ANAL_files/figure-html/" )
验证流程
- 逐行运行修正后的绘图代码,确认控制台、Rmd代码块内都能正常出图
- 确认YAML输出格式为
html_document - 清理完旧缓存文件后重新点击knit按钮即可正常渲染。
内容的提问来源于stack exchange,提问作者THEcommandomando
相关产品推荐
相关产品推荐

