amatplotlib 3D散点图alpha在查看不同的角度时会有所不同

问题描述 投票:0回答:2
当用matplotlib创建3D散点图时,我注意到当点的alpha(透明度)变化时,它会根据您旋转视图的方式而绘制不同的绘制。下面的示例图像略微旋转,这会导致alpha值神秘地逆转。有人熟悉这种行为以及如何解决吗?看起来“ Zorder”(Draw Order)是整个散点图调用的单个值。

enter image description hereenter image description here 简化的示例代码要重新创建:

import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(projection="3d") X = [i for i in range(10)] Y = [i for i in range(10)] Z = [i for i in range(10)] S = [(i+1)*400 for i in range(10)] A = [i/10 for i in range(10)] ax.scatter(xs=X, ys=Y, zs=Z, s=S, alpha=A) plt.show()

Python3.9.5
  • matplotlib3.5.1
python matplotlib scatter-plot
2个回答
2
投票
update

:已将修复程序添加到matplotlib,作为未来的一部分3.11.0版本(尚未在写作时尚未发布) 我还将其发布在

matplotlibgithub

上,以查看开发人员的想法。 根据他们的最新回应,这似乎是一个错误的错误:“我们拥有有限的核心开发人员资源和mpl_toolkits/mplot3d只是核心团队的次要优先级。很可能需要社区中的某人来接手并提供解决方案。 我会尝试这样做,但是在此期间,请发布此信息,以便使其他拥有更多经验的人都知道。

一个可能的解决方法是将每个点添加一个for

循环,例如:

import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(projection="3d") X = [i for i in range(10)] Y = [i for i in range(10)] Z = [i for i in range(10)] S = [(i+1)*400 for i in range(10)] A = [i/10 for i in range(10)] for x, y, z, s, a in zip(X, Y, Z, S, A): ax.scatter(xs=x, ys=y, zs=z, s=s, alpha=a, color="tab:blue") plt.show()

1
投票

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.