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

如何为Mayavi mlab绘制的3D图添加完整的外围坐标轴包围框

解决方案

Mayavi的mlab.axes()默认仅显示3个低侧坐标轴,要渲染完整的六面外围包围框,手动开启三个坐标轴对侧的显示权限即可,也可同步设置包围框边线样式保证视觉统一。

修改后的完整可运行代码如下:

import matplotlib.pyplot as plt
from mayavi import mlab
import numpy as np

import matplotlib
import mayavi
import sys

# 版本检查
print( 'matplotlib version: ', matplotlib.__version__ )
print( 'mayavi version    : ', mayavi.__version__ )
print( 'numpy版本     : ', np.__version__ )
print( 'python版本    : ', sys.version_info )

# 生成网格
x       = np.linspace(0,np.pi,100)
y       = np.linspace(0,2*np.pi,200)
z       = np.linspace(0,2*np.pi,400)
X, Y, Z = np.meshgrid(x, y, z)

# 生成绘图数据
dat = np.cos(X) * np.sin(Y) * np.cos(Z)

# 绘制3D等高线,extent参数指定数据对应的真实坐标范围,避免坐标轴显示网格索引值
mlab.contour3d(dat, extent=[x.min(), x.max(), y.min(), y.max(), z.min(), z.max()])
ax1 = mlab.axes( color=(1,1,1), nb_labels=4 )

# 开启所有对侧坐标轴显示,渲染完整包围框
# *每个属性的二元布尔值分别对应[低侧轴显示, 高侧轴显示]*
ax1.axes.x_axis_visibility = [True, True]
ax1.axes.y_axis_visibility = [True, True]
ax1.axes.z_axis_visibility = [True, True]
# 可选配置:统一包围框边线颜色、宽度
ax1.axes.property.color = (1,1,1)
ax1.axes.property.line_width = 1.0

mlab.show()

关键修改说明

  • 给contour3d添加extent参数,匹配数据的真实坐标范围,避免坐标轴默认显示0到网格数的索引值
  • x_axis_visibility、y_axis_visibility、z_axis_visibility均为二元布尔数组,分别控制对应坐标轴在两个相对面上的显示状态,全部设置为[True, True]即可同时显示正反两侧坐标轴,形成完整包围框
  • 可选的axes.property配置可以调整包围框边线的样式,保证和坐标轴视觉效果统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:05