Как обеспечить прозрачность срезов pcolor в области действия Axes3D? - PullRequest
2 голосов
/ 20 марта 2020

Я хотел бы визуализировать 2D-срезы на 3D-графике с помощью matplotlib и Axes3D, с некоторой прозрачностью для лучшего обзора, как представлено

picture depicting my data

, где 2D-срезы явно перекрываются. Эти фрагменты создаются pcolor, который, в отличие от pcolormesh, возвращает объект matplotlib.collections.Collection и, следовательно, может обрабатываться add_collection3d.

. Вопрос переноса свойства прозрачности уже обсуждался. там и там , хотя предложенные обходные пути (в Python комментариях ниже) не повлияли на мою проблему. Мой пример кода что-то вроде

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

X, Y = np.meshgrid(x,y)

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

alpha = 0.8

for i in range(len(islices)):
    im = ax.pcolor(X,Y,u[islices[i],:,:]) #,alpha=alpha)
    #im.set_facecolor((0, 0, 1, alpha))
    ax.add_collection3d(im,zs=xslices[i],zdir='y')

plt.show()
...