1

我想制作不同切片的 3D 体积数据的多窗口图。我发现PyVista这就是我要找的东西。当我只做一个情节时,一切都很好。但是,当我在一个窗口中绘制多个切片时,我遇到了一个问题:由于某种原因,子图共享颜色级别,这可能导致一个子图基本上什么都不显示,如图所示。

任何想法我在这里缺少什么将不胜感激!

这是代码(应该附上一张图片):

import numpy as np
import pyvista as pv

Nx, Ny, Nz  = 100, 100, 200

plotter    = pv.Plotter(shape=(1,2))

plotter.subplot(0,0)
vol1    = pv.wrap( np.random.randint(10, size=(Nx,Ny,Nz)) )
slic1   = vol1.slice_orthogonal()
plotter.add_mesh(slic1)

plotter.subplot(0,1)
vol2    = pv.wrap( np.random.randint(100, size=(Nx,Ny,Nz)) )
slic2   = vol2.slice_orthogonal()
plotter.add_mesh(slic2)

plotter.show()

在此处输入图像描述

4

1 回答 1

1

问题是标量条的标量存储在字典中,标量条标题作为键。当您不自己设置标量条标题时,使用默认的'',请参见Plotter.add_scalar_bar(). 由于两个数据集共享相同的空字符串作为键,后者覆盖前者。

解决方案是为您的标量条传递一个明确的标题:

import numpy as np
import pyvista as pv

Nx, Ny, Nz  = 100, 100, 200

plotter    = pv.Plotter(shape=(1,2))

plotter.subplot(0,0)
vol1    = pv.wrap( np.random.randint(10, size=(Nx,Ny,Nz)) )
slic1   = vol1.slice_orthogonal()
plotter.add_mesh(slic1, scalar_bar_args={'title': 'Vol1'})

plotter.subplot(0,1)
vol2    = pv.wrap( np.random.randint(100, size=(Nx,Ny,Nz)) )
slic2   = vol2.slice_orthogonal()
plotter.add_mesh(slic2, scalar_bar_args={'title': 'Vol2'})

plotter.show()

屏幕截图,其中两个子图都有一个颜色条,在相应的网格上具有合理的限制和着色

于 2021-11-17T18:25:20.050 回答