GLMakie 图 x 轴上的量化失真。为什么?

Quantization distortion in x-axis of GLMakie plot. Why?

我使用 GLMakie 创建了一个简单的图:

GLMakie.scatter( range((-3e-9+1e-3)..(3e-9+1e-3),100), range(1..100,100) )

结果如下所示:

看起来 x 轴被严重量化了。 Plots 包可以很好地处理相同的命令:

Plots.scatter( range((-3e-9+1e-3)..(3e-9+1e-3),100), range(1..100,100) )

如果 x 范围以 0 为中心,

GLMakie 也可以处理相同的图:

GLMakie.scatter( range((-5e-9)..(5e-9),100), range(1..100,100) )

为什么会这样? GLMakie 是否使用较小的浮点数来提高速度?我可以做些什么来避免这种情况吗?

Does GLMakie use a smaller float for speed?

是的。 OpenGL 通常使用 32 位浮点数,因此 Makie 已使用 Float32 构建。现在你已经标准化你的数据并手动调整刻度来解决这个问题。参见 https://makie.juliaplots.org/stable/examples/layoutables/axis/index.html#modifying_ticks

github 上也有很多关于此的问题,例如 https://github.com/JuliaPlots/Makie.jl/issues/1373