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

Pau*_* B. 6 julia makie.jl

我使用以下命令创建一个简单的绘图GLMakie

GLMakie.scatter( range((-3e-9+1e-3)..(3e-9+1e-3),100), range(1..100,100) )
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

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

Plots.scatter( range((-3e-9+1e-3)..(3e-9+1e-3),100), range(1..100,100) )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

GLMakie如果 x 范围以 0 为中心,也可以处理相同的图:

GLMakie.scatter( range((-5e-9)..(5e-9),100), range(1..100,100) )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

小智 2

GLMakie 是否使用较小的浮点数来提高速度?

是的,它确实。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