3D pyplot按深度散布不透明度

3D pyplot scatter opacity by depth

默认情况下,pyplot 的 3D 图有 depthshade=True。但是,在我的代码中,我需要根据样本的 属性 分别指定每个点的颜色。因此,深度效果会丢失。

有没有办法结合自定义颜色和 depthshade 行为?

我的其中一个子图的代码如下:

fig = plt.figure(figsize=(19.2, 10.8), dpi= 80)
handles = []
for i in range(18):
  handles.append(mlines.Line2D([], [], color=colors_azi[i], marker='.'))
ax = fig.add_subplot(231, projection='3d')
for i in trange(len(outs[1])):
  ax.scatter(outs[0][i], outs[1][i], outs[2][i], c=colors_azi[azimuths[i]//2].reshape(1,-1), depthshade=True)
ax.set_title('Azimuth (train)')

请注意,我正在重塑以避免 scatter 函数出错,我有点怀疑这可能是原因,但我不知道该怎么做。情节看起来像这样,纯色:

好的,所以在某些时候我发现问题是在每个点上做一个散点图来映射颜色(这也在交互式 window 中产生了一个超级滞后的行为)。

每次分散呼叫都会应用一次深渊。最终代码为:

fig = plt.figure(figsize=(10.8, 10.8), dpi= 80)
ax = fig.add_subplot(111, projection='3d')
c1 = []
for i in range(len(outs[1])):
  c1.append(colors_azi[azimuths[i]//2])
ax.scatter(outs[0], outs[1], outs[2], color=c1)

产生这样的东西: