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

Makie.jl绘制三维f(x,y,z)热力图的相关操作问题咨询

问题1:调整相机位置

LScene类型的scene属性就是你需要的Scene对象,直接传入即可调用update_camera!,也可以直接修改LScene的相机参数属性,写法更简洁:

# 方法1:调用update_camera!
update_camera!(ax.scene, 
    eyeposition = Vec3f(15, 15, 8), # 相机所在位置
    lookat = Vec3f(L/2, L/2, L/2), # 相机对准的中心点
    upvector = Vec3f(0, 0, 1) # 向上方向轴
)

# 方法2:直接修改LScene属性
ax.eyeposition[] = (12, 12, 6)
ax.lookat[] = (L/2, L/2, L/2)
ax.zoom[] = 1.2 # 调整缩放比例

问题2:调整坐标轴标签、刻度属性

直接修改LScene的坐标轴相关属性即可:

# 设置坐标轴标签
ax.xlabel = "X维度"
ax.ylabel = "Y维度"
ax.zlabel = "Z维度"
# 设置标签字体大小
ax.xlabelsize = 16
ax.ylabelsize = 16
ax.zlabelsize = 16
# 设置刻度范围和取值
ax.xticks = range(1, L, step=2)
ax.yticks = range(1, L, step=2)
ax.zticks = range(1, L, step=2)
# 设置刻度标签大小
ax.xticklabelsize = 12
ax.yticklabelsize = 12
ax.zticklabelsize = 12
# 如需隐藏坐标轴可设置 ax.show_axis = false

问题3:添加颜色条

你原代码直接手动拼接RGBA颜色,无法关联Makie的颜色映射系统,需要先修改绘图逻辑,直接将F值传给color参数,使用内置的颜色映射,之后就可以快速添加颜色条:

using ColorSchemes

# 优化绘图逻辑,避免循环逐块设置颜色
fig = Figure(resolution = (1200, 900))
ax = LScene(fig[1,1])
# 批量绘制所有立方体,绑定F值作为颜色输入
plt = mesh!.(Ref(ax), 
    [HyperRectangle(Vec3f0(p...), Vec3f0(0.8)) for p in positions],
    color = F,
    colormap = :blues, # 可替换为其他配色方案,如:viridis、:thermal等
    alpha = 0.5
)
# 批量添加线框
wireframe!.(Ref(ax),
    [HyperRectangle(Vec3f0(p...), Vec3f0(0.8)) for p in positions],
    linewidth = 0.1,
    overdraw = false
)
# 添加颜色条,绑定绘图对象
Colorbar(fig[1,2], plt,
    label = "f(x,y,z)取值",
    labelsize = 14,
    ticklabelsize = 12
)

问题4:保存绘图结果

直接调用Makie内置的save函数即可,支持PNG、SVG、PDF等多种格式:

# 保存为PNG格式,可指定分辨率
save("3d_heatmap.png", fig, resolution = (1200, 900))
# 保存为矢量图格式
save("3d_heatmap.svg", fig)
save("3d_heatmap.pdf", fig)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:15:01