Julia制作3D交互式图形 运行PlotlyJS示例代码报错求助
问题说明
参考Plotly官方Julia 3D曲面绘图教程运行示例代码时,在请求GitHub托管的mt_bruno_elevation.csv高程数据集阶段触发报错,错误提示为getaddrinfo地址解析失败。
复现用示例代码
using PlotlyJS, CSV, HTTP, DataFrames # Read data from a csv df = CSV.File( HTTP.get("https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv").body ) |> DataFrame z_data = Matrix{Float64}(df) layout = Layout( title="Mt Bruno Elevation", autosize=false, width=500, height=500, margin=attr(l=65, r=50, b=65, t=90) ) plot(surface(z=z_data), layout)
触发的报错信息
ERROR: IOError(Base.IOError("getaddrinfo: no such file or directory (ENOENT)", -4058) during request(https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv))
排查思路与解决方案
- 定位网络层问题:
getaddrinfo属于域名解析阶段的报错,优先检查本地DNS配置是否正常、是否存在网络访问限制、系统代理规则是否拦截了Julia的网络请求,修复对应网络连通问题后重新运行代码即可。 - 替换为本地文件读取:如果暂时无法连通对应域名,可提前将mt_bruno_elevation.csv文件存放到当前Julia工作目录,移除HTTP请求逻辑,直接读取本地文件,修改后代码如下:
using PlotlyJS, CSV, DataFrames # 读取本地存储的数据集 df = CSV.File("mt_bruno_elevation.csv") |> DataFrame z_data = Matrix{Float64}(df) layout = Layout( title="Mt Bruno Elevation", autosize=false, width=500, height=500, margin=attr(l=65, r=50, b=65, t=90) ) plot(surface(z=z_data), layout)
- 用模拟数据快速验证功能:如果仅需要确认3D曲面绘图逻辑是否正常,无需依赖官方数据集,可直接生成模拟高程矩阵运行,排除绘图代码本身的问题,示例代码如下:
using PlotlyJS # 生成50*50的模拟高程数据 z_data = rand(50, 50) * 200 layout = Layout( title="3D Surface Test", autosize=false, width=500, height=500, margin=attr(l=65, r=50, b=65, t=90) ) plot(surface(z=z_data), layout)
- 检查依赖包状态:确认本地安装的HTTP.jl、CSV.jl、PlotlyJS.jl版本兼容无缺失,若包版本过旧可在Julia REPL中执行
] up更新全量依赖后重试。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

