初步

【Makie】是比Plots更加强大的可视化库,和Plots类似,它也支持多种后端

  • CairoMakie:非动态二维图,能制作出版质量图形。
  • GLMakie:基于OpenGL,性能强大,可以制作三维图形, 可以制作动态交互图形。 但不擅长制作矢量图。
  • WGLMakie:支持在网页中的交互图形。
  • RPRMakie:使用RadeonProRender引擎, 可以制作光线追踪图像。

其完整的绘图流程为创建窗口->添加坐标->绘制图像,示例如下

] add GLMakie           # 添加库,然后退格键回到命令行
using GLMakie
fig= Figure();           # 创建并弹出窗口
display(fig);            # 如果fig关闭了,可重新弹出
ax = Axis(fig[1,1]);     # 在窗口中添加一个坐标轴

xs = 0:0.1:7;
ys = sin.(xs);
plot!(ax, xs, ys)       # 如果在
plot(xs, ys)

上述代码中演示了两种绘图方案,一种在已有的坐标系中绘制,相当于改动了现有的图像,故而需要加感叹号;另一种独立绘图,无需加感叹号,也无需创建Figure和Axis。

出图如下,和Plots不同,该图提供交互功能,包括窗口拉伸,左键画框可以缩放,右键拖拽可以移动,【Ctrl+左键单击】可以复原。

在这里插入图片描述

风格定制

Makie可通过Theme 系统和绘图函数参数来定制图像风格,示例如下

在这里插入图片描述

代码为

set_theme!(
    font="Times New Roman",     # 一般只需设置字体即可
    fontsize=14,                # 全局默认字号
    titlefont="Times New Roman Bold",  # 标题用粗体
    titlefontsize=16,
    labelfontsize=12,
    tickfontsize=10
)

fig = Figure(size=(600, 400));
ax = Axis(fig[1, 1],
    xlabel="Time (s)",
    ylabel="Amplitude",
    title="Style Test")

lines!(ax, xs, ys;
    linestyle=:solid,
    linewidth=2.5,
    linecap=:round,           # :round, :square, :butt
    color=:blue,
    transparency=false,
    alpha=0.9
)

fig

其中,【set_theme】用于设置图像风格,上例中,将字体设为Times New Roman,并设置了字体尺寸、标题字体尺寸等。

在【Axis】中,添加了 x , y x,y x,y轴的标签,以及标题。

最后,lines绘图时,通过linstyle来定制绘图线型,:solid为实线,此外还支持:dash, :dot, :dashdot, :dashdotdot等选择。

三维图

Makie同样可以绘制三维图像,示例如下,从观感上来说,要比Matplotlib好很多,而且在交互式操作时非常地丝滑

在这里插入图片描述

其函数表达式为

z = sin ⁡ ( x 2 + y 2 ) x 2 + y 2 z=\frac{\sin(\sqrt{x^2+y^2})}{\sqrt{x^2+y^2}} z=x2+y2 sin(x2+y2 )

绘制代码如下

x = y = range(-5, 5, length=100)
z = [sin(sqrt(xi^2 + yi^2)) / sqrt(xi^2 + yi^2 + 1e-6) for xi in x, yi in y]

fig = Figure(size=(800, 600))
ax = Axis3(fig[1, 1],
    xlabel="x", ylabel="y", zlabel="f(x,y)",
    title="3D Surface",
    elevation=π/6, azimuth=π/4)  # 调整视角

surface!(ax, x, y, z;
    colormap=:plasma,
    transparency=true,
    colorrange=(-1, 1))

fig

其中Axis3用于指明3D坐标系,surface为3D曲面图的绘制函数。

小结

Makie是Julia语言中强大的可视化库,支持多种后端:CairoMakie(高质量2D图)、GLMakie(3D交互图)、WGLMakie(网页交互图)和RPRMakie(光线追踪)。绘图流程包括创建窗口、添加坐标轴和绘制图像,支持两种绘图方式:修改现有图像(带!)或独立绘图。Makie提供交互功能如缩放、移动和重置视图。 通过Theme系统可定制风格,如设置字体、字号和标题样式。绘图函数参数可调整线型、宽度和颜色等。3D绘图使用Axis3坐标系和surface函数,支持视角调整和颜色映射。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐