2011-12-06 192 views
1

我用下面的命令来创建一个3D散点图:matplotlib 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。他们几乎看起来像是在面具背后。它也似乎取决于单个sots的3D位置。有没有办法让所有的点看起来非常黑暗和不透明?

+0

你能发表最简单的工作示例吗? – mac

回答

3

这似乎用花哨的3D效果是散射,所以你可以在点与点之间区分后成立前景和背景中的点。你可能必须破解mplot3d才能停止这样做。

或者,您可以使用不显示此行为的plot3D。

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

耶,好的解决方案 – joaquin

2

随着α= 0.8点已经看起来非常透明。不要使用alpha。
此外,您可以通过以比它们各自的面孔颜色更深的颜色绘制边缘线,从而为您的网点留出更深的外观。
使用分散关键字参数edgecolor/edgecolors或散射的创建(例如,以大胆的所有的点黑色的边框)与myscatterplot.set_edgecolors(color)

+1

我试过了。添加edgecolor确实会使边界更暗,但点(1,1,1)和附近的点仍然看起来非常模糊,颜色也比(10,10,10) – Jingping

+1

好很多,mpl3d试图给出使用透明度的3d感觉。也许效果可以消除,虽然我不知道如何,但是 – joaquin