本地保存的flexdashboard生成的HTML文件无法显示图表该如何解决?
报错是因为你导出的flexdashboard默认需要调用远程托管的mathzoom.js扩展(属于plotly的数学公式缩放配套资源),本地离线打开HTML文件时无法加载该远程资源,直接导致plotly对象初始化失败,图表无法正常渲染。
你可以根据自己的使用场景选任意一种方法修复:
方法1:导出时强制嵌入所有依赖资源
打开你的flexdashboard对应Rmd文件,修改顶部YAML配置,确保输出项开启self_contained: true,开启后所有用到的JS、CSS资源都会全部嵌入到单个HTML文件里,不需要依赖任何外部资源,修改后的YAML参考:--- title: "你的仪表盘标题" output: flexdashboard::flex_dashboard: self_contained: true ---如果你是用代码调用render函数渲染,调用时显式添加参数即可:
rmarkdown::render("你的源文件.Rmd", output_options = list(self_contained = TRUE))方法2:禁用plotly的数学公式扩展
如果你不需要在图表里渲染数学公式,可以直接关闭plotly对mathjax相关资源的调用,从根源上避免加载mathzoom.js。在所有plotly图表生成代码之前添加全局配置即可:options(plotly.mathjax = NULL)也可以单独给单个plotly对象添加配置:
plot_ly(...) %>% config(mathjax = NULL)方法3:临时打开使用本地HTTP服务
如果你不想重新渲染文件,只需要自己本地查看,可以在HTML文件所在的目录启动一个简易本地HTTP服务,规避本地文件协议的路径限制。以Python为例,在桌面目录打开终端执行命令:python -m http.server 8000
之后在浏览器地址栏输入http://localhost:8000/你的文件名.html即可正常打开查看。
内容的提问来源于stack exchange,提问作者user11493891

