按深度的3D pyplot散点图不透明度

问题描述 投票:0回答:1

默认情况下,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函数的错误,我正在重塑代码,我很怀疑这可能是原因,但我不知道如何做。然后,该图看起来像是纯色:

enter image description here

python matplotlib plot colors scatter
1个回答
0
投票

好吧,在某种程度上,我发现问题在于每个点都在分散以映射颜色(这在交互式窗口中也产生了超大的滞后行为)。

每次单独的散布呼叫都会应用一次深度探伤。最终代码是:

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)

哪个会产生这样的内容:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.