2011-12-06 229 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