matplotlib 3D散点图点的颜色很浅

1 投票
2 回答
4724 浏览
提问于 2025-04-17 07:49

我用下面的命令创建了一个3D散点图:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

sizeseq = 2
colorseq = "k"

fig = plt.figure(1, (5,5), dpi=300)
ax = Axes3D(fig)
ax.view_init(20, -45)

x, y, z = [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10]
ax.scatter(x, y, z, c=colorseq, s=sizeseq, lw=0, alpha=.8)

plt.show()

但是,点的颜色看起来很浅,即使我把透明度设置为1。它们几乎看起来像是被遮住了一样。而且,这似乎还和每个点在3D空间中的位置有关。有没有办法让所有的点看起来真的很深色且不透明呢?

2 个回答

2

当透明度设置为0.8时,点已经看起来很透明了。其实不需要用透明度。
另外,你可以通过给点的边缘线涂上比点本身颜色更深的颜色,让它们看起来更显眼。
可以使用散点图的参数 edgecoloredgecolors,或者在创建散点图后再设置(比如把所有点的边框设置为黑色),用 myscatterplot.set_edgecolors(color) 这个方法。

3

这看起来是在用一种炫酷的3D效果来显示散点图,这样你就能区分前面的点和后面的点。你可能需要对mplot3d进行一些修改,才能让它不再这样显示。

另外,你也可以试试plot3D,它就不会出现这种情况。

ax.plot3D(x, y, z, 'k.', alpha=.8)

撰写回答