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。
我使用 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) )
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。