Matplotlib 隐藏散布在体素后面

Matplotlib hiding scatters behind voxels

我正在尝试可视化一个 3D 参数 space,其中我对我的体素参数很有信心,而我的估计参数是散布的。目标是清楚地看到参数是否在这个space之内。

即使体素不是透明的,也会绘制体素的散点 'on top':

我希望体素至少隐藏它后面的散点,但最好我想让体素透明(例如 alpha 0.5),散点根据光的体素数量改变颜色走过。使用 matplotlib 甚至可以实现这样的事情吗?

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


x, y, z = np.random.random((3, 100)) * 5

fig = plt.figure()
ax = fig.gca(projection='3d')

ax.scatter(x, y, z)

cube = np.mgrid[0:1:0.2,0:1:0.2] > 0.5
ax.voxels(cube, edgecolor='k', linewidth=0.)

正如@tmdavison 所指出的,matplotlib 对于这类事情非常有限。这是我使用 mayavi 的示例。

import mayavi.mlab
import np as np


x, y, z = np.random.random((3, 100)) * 5
xx, yy, zz = np.where(np.mgrid[0:1:0.2,0:1:0.2] > 0.5)

nodes = mayavi.mlab.points3d(x, y, z,
                             color=(1, 0, 0),
                             scale_factor=0.1)

mayavi.mlab.points3d(xx, yy, zz,
                     mode="cube",
                     color=(0, 1, 0),
                     scale_factor=1)

mayavi.mlab.show()