离线查看交互式图表需避免依赖在线CDN:一、用plotly.io.to_html导出含内嵌JS的HTML;二、预下载Plotly.js并本地引用;三、PyWebIO中集成离线Plotly片段;四、GChart加载本地JSON;五、Highcharts本地化部署。

如果您希望在无网络连接的环境中查看交互式图表,则可能因图表库默认依赖在线CDN加载JavaScript资源而失败。以下是实现交互图表离线查看的多种配置方法:
一、使用plotly.io.to_html导出含内嵌JS的HTML文件
该方法将Plotly图表及其全部JavaScript依赖打包进单个HTML文件,确保完全离线可运行。
1、创建Plotly图表对象,例如使用plotly.express或plotly.graph_objects构建图形。
2、调用plotly.io.to_html函数,设置参数include_plotlyjs=True,确保Plotly.js代码被完整嵌入HTML中。
3、将返回的HTML字符串写入本地文件,例如使用open("chart.html", "w", encoding="utf-8").write(html_str)。
4、双击生成的chart.html文件,即可在任意浏览器中离线打开并操作缩放、悬停、图例切换等交互功能。
二、预下载Plotly.js并本地引用
避免重复嵌入大体积JS代码,适用于需批量生成多个离线图表的场景;通过统一引入本地Plotly.js提升加载效率与一致性。
1、从Plotly官方GitHub Release页面下载最新plotly-latest.min.js文件,保存至项目本地static/js/目录下。
2、使用plotly.io.to_html时,设置include_plotlyjs='directory',并指定directory参数为本地路径(如'./static/js')。
3、确保生成的HTML文件与该JS目录结构保持相对路径一致,否则图表无法初始化。
4、关键提示:必须保证HTML中script标签实际加载的是本地JS文件,可通过浏览器开发者工具Network面板验证无外部域名请求。
三、在PyWebIO中集成离线Plotly图表
适用于构建轻量级离线数据看板应用,利用PyWebIO作为前端容器,规避传统Web服务器依赖。
1、在Python脚本中创建Plotly图表对象fig。
2、调用plotly.io.to_html(fig, include_plotlyjs=True, full_html=False)获取仅含div和内联JS的HTML片段。
3、使用PyWebIO的put_html()函数直接输出该HTML片段。
4、注意:full_html=False是必需设置,否则会生成重复的html/body标签,导致PyWebIO渲染异常。
四、基于GChart的JSON数据源离线方案
适用于已存在结构化数据文件的场景,通过纯前端方式加载本地JSON并驱动GChart渲染,全程不触网。
1、准备data.json文件,内容为符合Google Charts数据格式的二维数组或DataTable JSON序列化结果。
2、在index.html中引入本地存储的google-charts-loader.js(可从官方离线包提取)。
3、使用XMLHttpRequest或fetch API读取同目录下的data.json文件,禁用CORS检查(需通过file://协议外的本地服务器访问,或启用浏览器--unsafely-treat-insecure-origin-as-secure标记)。
4、解析JSON后调用google.visualization.arrayToDataTable()构造数据表,并绑定至ColumnChart或LineChart实例。
五、Highcharts本地化部署方案
利用Highcharts官方提供的离线发行包,消除对code.highcharts.com等CDN的运行时依赖。
1、下载Highcharts完整压缩包(包含highcharts.js、modules/exporting.js等所有必要模块)。
2、解压后将js文件统一存放于项目本地lib/highcharts/路径下。
3、在HTML中按需顺序引入:
– 先引入highcharts.js
– 再引入所需扩展模块,如exporting.js、accessibility.js
4、初始化图表时,确保options中不设置任何远程资源路径,例如exporting.sourceWidth等参数仅影响导出行为,不触发网络请求。
5、验证要点:打开浏览器开发者工具,在Offline模式下刷新页面,确认Console无报错、Network无红色失败请求。










