Matplotlib прячется за вокселями - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь визуализировать трехмерное пространство параметров, где я уверен в своих параметрах с вокселями, и где мои оценочные параметры - с помощью рассеивателей. Цель состоит в том, чтобы четко увидеть, находятся ли параметры в этом пространстве.

Несмотря на то, что воксели не видны, рассеиватели нанесены «сверху» вокселя:

voxel_scatter

Iхотел бы, чтобы воксел, по крайней мере, скрывал рассеиватели за ним, но желательно, чтобы воксели были прозрачными (например, альфа 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.)

1 Ответ

0 голосов
/ 01 октября 2019

Как указал @tmdavison, matplotlib довольно ограничен для подобных вещей. Вот мой пример использования mayavi . enter image description here

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