You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GLMakie绘制动画线散点图出现InexactError: Int64(0.2)错误如何解决

报错根因

该错误并非你使用的业务数据类型异常导致,是旧版本GLMakie处理Date类型作为坐标轴坐标时,内部自动调整轴范围、计算刻度步长的逻辑会生成浮点型偏移量,尝试将0.2这类非整数浮点数强制转换为对应Int64类型的时间戳时无法精确转换,进而触发InexactError。你另一组测试数据未触发报错,大概率是该组数据x轴非Date类型,或数值范围刚好让Makie计算出的刻度步长为整数。

可行解决方法
  • 方案1:固定坐标轴范围,禁用自动调整
    在创建Axis时直接指定x、y轴的上下限,避免运行过程中自动调整轴范围触发类型转换错误,修改后的Axis创建代码如下:
    ax1 = fig[1, 1] = Axis(fig,
        title = "US COVID-19",
        titlegap = 14, titlesize = 14,
        xlabel = "日期", xlabelsize = 12,
        ylabel = "确诊数", ylabelsize = 12,
        # 新增固定轴范围配置
        limits = (minimum(d1.date), maximum(d1.date), 0, maximum([maximum(d1.value), maximum(d1.value2)]) + 5)
    )
    
  • 方案2:转换x轴为数值序号,手动配置刻度标签
    若你使用的GLMakie版本过旧,固定范围仍无法解决问题,可以把x轴替换为1~n的整数序号,再手动映射刻度为对应日期,修改后完整代码如下:
    fig = Figure(resolution = (800, 480))
    
    # 提前生成x轴序号和对应刻度标签
    x_seq = 1:nrow(d1)
    xtick_pos = x_seq[1:3:end] # 每3个数据点显示一个刻度,避免标签拥挤
    xtick_label = Dates.format.(d1.date[1:3:end], "yyyy-mm-dd")
    
    ax1 = fig[1, 1] = Axis(fig,
        title = "US COVID-19",
        titlegap = 14, titlesize = 14,
        xlabel = "日期", xlabelsize = 12,
        ylabel = "确诊数", ylabelsize = 12,
        xticks = (xtick_pos, xtick_label),
        limits = (0, nrow(d1)+1, 0, maximum([maximum(d1.value), maximum(d1.value2)]) + 5)
    )
    
    frames = 1:(length(d1.date))
    colors = [:red, :blue]
    columns = propertynames(d1)[2:end]
    
    record(fig, "covid_US.mp4", frames; framerate = 2) do i
        for j in 1:length(columns)
            lines!(ax1, x_seq[1:i], d1[1:i, (j + 1)],
                color = (colors[j], 0.5)
            )
            scatter!(ax1, x_seq[1:i], d1[1:i, (j + 1)],
                color = colors[j]
            )
        end
    end
    
  • 方案3:升级GLMakie到最新稳定版
    0.19及以上版本的GLMakie已经修复了时间类型坐标轴的自动转换bug,直接更新包即可解决问题:
    using Pkg
    Pkg.update("GLMakie")
    
可选优化建议

你当前代码每渲染一帧都会往轴上新增lines!、scatter!对象,帧数量大时会出现卡顿,可提前创建Observable类型的数据源,每帧仅更新数据内容而非新增绘图对象,运行效率会有明显提升。

内容的提问来源于stack exchange,提问作者codedancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 08:36:02