Julia中PlotlyJS的savefig保存PNG/PDF时卡顿求助
Julia PlotlyJS savefig保存PNG/PDF卡顿且文件损坏问题
问题现象
运行以下PlotlyJS代码可正常生成并显示散点图,但执行savefig(p, "Plots/net_comparative.png")时,REPL持续卡顿,生成的文件损坏且进程无法正常结束;保存为HTML格式正常,仅PNG/PDF格式出现问题,且相同代码在另一台电脑可正常保存。
示例代码:
using PlotlyJS n_points = 250 x_vals = 1:n_points example_data = rand(n_points) constant_mean = 0.5 trace1 = scatter(; x=x_vals, y=fill(constant_mean, n_points), name="Mean χ = 0.5") trace2 = scatter(; x=x_vals, y=example_data, name="Data χ = 0.5") layout = Layout(; title="Simplified Example") p = plot([trace1, trace2], layout)
系统环境信息
julia> versioninfo() Julia Version 1.9.1 Commit 147bdf428c (2023-06-07 08:27 UTC) Platform Info: OS: Windows (x86_64-w64-mingw32) CPU: 16 × 12th Gen Intel(R) Core(TM) i7-12650H WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-14.0.6 (ORCJIT, alderlake) Threads: 1 on 16 virtual cores Environment: JULIA_EDITOR = code JULIA_NUM_THREADS = julia> Pkg.status() Status `C:\Users\franc\.julia\environments\v1.9\Project.toml` ⌃ [35d6a980] ColorSchemes v3.22.0 ⌃ [31c24e10] Distributions v0.25.98 [a98d9a8b] Interpolations v0.14.7 [caafb194] Kaleido v0.2.7 ⌃ [429524aa] Optim v1.7.6 [a03496cd] PlotlyBase v0.8.19 `https://github.com/sglyon/PlotlyBase.jl#master` [f0f68f2c] PlotlyJS v0.18.11 ⌃ [c3e4b0f8] Pluto v0.19.27 [2fc8631c] PlutoSliderServer v0.3.26 [fcd29c91] QuantEcon v0.16.5 ⌃ [f2b01f46] Roots v2.0.17 ⌃ [2913bbd2] StatsBase v0.34.0 [37e2e46d] LinearAlgebra [de0858da] Printf [9a3f8284] Random Info Packages marked with ⌃ have new versions available and may be upgradable.
解决方案建议
PlotlyJS保存PNG/PDF格式依赖Kaleido后端,优先从Kaleido及版本兼容性排查:
- 升级Kaleido包:当前Kaleido版本为0.2.7,执行以下命令更新到最新稳定版:
using Pkg Pkg.update("Kaleido") - 手动指定Kaleido二进制路径:若自动安装的Kaleido存在问题,手动下载Windows版Kaleido二进制文件,设置环境变量后重启Julia:
ENV["KALEIDO_PATH"] = "C:/path/to/your/kaleido.exe" - 修复PlotlyBase版本兼容性:当前PlotlyBase使用master分支版本,可能与PlotlyJS 0.18.11存在兼容问题,切换到官方发布版:
Pkg.add(PackageSpec(name="PlotlyBase", version="0.8.19")) - 明确保存参数:保存时指定格式、尺寸等参数,避免自动检测异常:
savefig(p, "test.png", format="png", width=800, height=600, scale=2) - 检查文件写入权限:确保保存路径(如
Plots/目录)有写入权限,尝试保存到桌面等权限明确的路径。 - 启用多线程:以多线程模式启动Julia(
julia -t auto),再尝试保存操作,排查单线程资源不足问题。
内容的提问来源于stack exchange,提问作者Franco Riottini
相关产品推荐
相关产品推荐

