如何在 Mayavi mlab 图周围绘制一个完整的框?
How to draw a full box around a Mayavi mlab plot?
我正在使用 Mayavi 模块中的 mlab
制作一些体积数据的 3D 等高线图。我想围绕该图绘制一个带有轴的框,但我只能得到一个 x 轴、一个 y 轴和一个 z 轴。不绘制与这些轴相对的轴。我如何获得那些缺失的轴?
这是我的代码:
import matplotlib.pyplot as plt
from mayavi import mlab
import numpy as np
import matplotlib
import mayavi
import sys
# check versions
print( 'matplotlib version: ', matplotlib.__version__ )
print( 'mayavi version : ', mayavi.__version__ )
print( 'numpy version : ', np.__version__ )
print( 'python version : ', sys.version_info )
# create the grid
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)
# create the data to be plotted
dat = np.cos(X) * np.sin(Y) * np.cos(Z)
# make a 3D contour plot
mlab.contour3d(dat)
ax1 = mlab.axes( color=(1,1,1), nb_labels=4 )
mlab.show()
版本检查输出如下:
matplotlib version: 3.5.0
mayavi version : 4.7.4
numpy version : 1.21.4
python version : sys.version_info(major=3, minor=8, micro=10, releaselevel='final', serial=0)
最后是图像,可以清楚地看到绘图周围没有完整的框:
答案其实很简单:mlab.outline()
。必须用以下代码替换等高线绘图部分:
# make a 3D contour plot
cont3d = mlab.contour3d(dat)
ax1 = mlab.axes( color=(1,1,1), nb_labels=4 )
mlab.outline(cont3d)
mlab.show()
我正在使用 Mayavi 模块中的 mlab
制作一些体积数据的 3D 等高线图。我想围绕该图绘制一个带有轴的框,但我只能得到一个 x 轴、一个 y 轴和一个 z 轴。不绘制与这些轴相对的轴。我如何获得那些缺失的轴?
这是我的代码:
import matplotlib.pyplot as plt
from mayavi import mlab
import numpy as np
import matplotlib
import mayavi
import sys
# check versions
print( 'matplotlib version: ', matplotlib.__version__ )
print( 'mayavi version : ', mayavi.__version__ )
print( 'numpy version : ', np.__version__ )
print( 'python version : ', sys.version_info )
# create the grid
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)
# create the data to be plotted
dat = np.cos(X) * np.sin(Y) * np.cos(Z)
# make a 3D contour plot
mlab.contour3d(dat)
ax1 = mlab.axes( color=(1,1,1), nb_labels=4 )
mlab.show()
版本检查输出如下:
matplotlib version: 3.5.0
mayavi version : 4.7.4
numpy version : 1.21.4
python version : sys.version_info(major=3, minor=8, micro=10, releaselevel='final', serial=0)
最后是图像,可以清楚地看到绘图周围没有完整的框:
答案其实很简单:mlab.outline()
。必须用以下代码替换等高线绘图部分:
# make a 3D contour plot
cont3d = mlab.contour3d(dat)
ax1 = mlab.axes( color=(1,1,1), nb_labels=4 )
mlab.outline(cont3d)
mlab.show()