我正在尝试在 mayavi 中可视化一些 3D 标量数据。我可以使用图像平面小部件单独可视化数据。我的目标是混合两个相同大小和间距的不同标量体积,并使用图像平面小部件显示它们。
我已经尝试过使用图像平面小部件。更改 ipw 的不透明度但无济于事,mayavi 不是混合两个立方体,而是分别处理它们。
import dask.array as da
import numpy as np
import util
import matplotlib.pyplot as plt
import scipy
from mayavi import mlab
in_path = '/home/user/Desktop/Attribute_Extract_v_0.1/small_vol.hdf5'
in_path_2 = '/home/user/Desktop/Attribute_Extract_v_0.1/anu_malik.hdf5'
data = util.read(in_path)
data_2 = util.read(in_path_2)
shaped_data_2 = np.array(data_2)
shaped_data = np.array(data)
print(shaped_data.shape)
vm = np.percentile(shaped_data,99)
vm2 = np.percentile(shaped_data_2,99)
vm_3 = np.percentile(shaped_data_2,20)
vm_4 = np.percentile(shaped_data_2,80)
#Use mayavi to plot the 3D seismic cube with xline , inline and , Timeslice
source = mlab.pipeline.scalar_field(shaped_data)
source_2 = mlab.pipeline.scalar_field(shaped_data_2)
source.spacing = [1, 1, -1]
source_2.spacing = [1, 1, -1]
vol = mlab.pipeline.volume(source_2, vmin=vm_3, vmax=vm_4)
for axis in ['x', 'y', 'z']:
plane = mlab.pipeline.image_plane_widget(source_2,
plane_orientation='{}_axes'.format(axis),
slice_index=100, colormap='Spectral',opacity=0.2, vmin=-vm2, vmax=vm2 )
plane_2 = mlab.pipeline.image_plane_widget(source,
plane_orientation='{}_axes'.format(axis),
slice_index=100, colormap='seismic',opacity=0.5, vmin=-vm, vmax=vm )
# Flip colormap. you can choose to ignore
plane.module_manager.scalar_lut_manager.reverse_lut = True
mlab.outline()
mlab.show()
我希望将两卷混合在一起,并且只有一个 ipw 可见,有什么方法可以实现。