PyVista 的多 window 图正在(错误地)共享颜色级别

Multi-window plot with PyVista are (wrongly) sharing the colorlevels

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

如能知道我遗漏了什么,将不胜感激!

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

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()

问题是标量栏的标量存储在字典中,标量栏标题作为键。当您不自己设置标量栏标题时,将使用默认值 '',请参阅 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()