2013-02-25 112 views
1

我之前發佈的一個程序,我試圖用一個依賴於電壓大小的彩色貼圖繪製3d散點圖上的四維數據(xyz座標和電壓)。Matplotlib 3d散點圖缺失顏色映射

雖然我的數據點總是顯示爲藍色,表明顏色映射圖沒有正確應用,但我能夠無誤地運行我的程序(提示我不缺少任何包)。任何人都可以看到問題是什麼?如果是的話,我非常感激。

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

x = array([-4,-4, -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,4,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, -6.5, -6, -5.5, 
    ]) 
y = array([-0.1, 3.95, 5.8,4.4,0.1,-4,-5.8,-4,1,2.4,3.2, 1.6,-0.8,-2.6,-3.3,-1.4,-0.1,3.95, 5.8,4.4,0.1,-4,-5.8,-4,1,2.4, 3.2, 1.6, -0.8, -2.6, -3.3, -1.4, -0.1, 3.95, 5.8, 4.4, 0.1, -4, -5.8, -4, 1, 2.4, 3.2, 1.6, -0.8, -2.6, -3.3, -1.4, -0.1, 3.95, 5.8, 4.4, 0.1, -4, -5.8, -4, 1, 2.4, 3.2, 1.6, -0.8, -2.6, -3.3, -1.4, -0.1, 3.95, 5.8, 4.4, 0.1, -4, -5.8, -4, 1, 2.4, 3.2, 1.6, -0.8, -2.6, -3.3, -1.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    ]) 
z = array([5.85, 4, 0.2,-3.8,-5.85,-4.1,-0.15,4,2.75,1.4,-0.3, -2.6, -2.75,-2.7, 1.2, 3.2,5.85,4, 0.2,-3.8,-5.85,-4.1,-0.15, 4, 2.75, 1.4, -0.3, -2.6, -2.75, -2.7, 1.2, 3.2, 5.85, 4, 0.2, -3.8, -5.85, -4.1, -0.15, 4, 2.75, 1.4, -0.3, -2.6, -2.75, -2.7, 1.2, 3.2, 5.85, 4, 0.2, -3.8, -5.85, -4.1, -0.15, 4, 2.75, 1.4, -0.3, -2.6, -2.75, -2.7, 1.2, 3.2, 5.85, 4, 0.2, -3.8, -5.85, -4.1, -0.15, 4, 2.75, 1.4, -0.3, -2.6, -2.75, -2.7, 1.2, 3.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    ]) 
v = array([0.29, 0.32, 0.3, 0.27, 0.3, 0.28, 0.31, 0.28, 0.19, 0.18, 0.19, 0.18, 0.19, 0.19, 0.2, 0.19, 0.12, 0.12, 0.11, 0.1, 0.11, 0.15, 0.14, 0.13, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.32, 0.31, 0.3, 0.31, 0.29, 0.3, 0.32, 0.31, 0.2, 0.21, 0.19, 0.19, 0.19, 0.19, 0.19, 0.2, 0.13, 0.12, 0.14, 0.14, 0.17, 0.17, 0.16, 0.14, 0.18, 0.18, 0.18, 0.19, 0.19, 0.19, 0.19, 0.18, 0.16, 0.18, 0.2, 0.19, 0.18, 0.15, 0.16, 0.18, 0.18, 0.18, 0.18, 0.17, 0.17, 0.17, 0.18, 0.18, 0.13, 0.14, 0.15, 0.16, 0.17, 0.17, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.17, 0.17, 0.16, 0.15, 0.14, 0.12, 0.08, 0.09, 0.11, 0.09, 0.1, 0.11, 
    ]) 

c = abs(v) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
cmhot = plt.get_cmap("hot") 
cax = ax.scatter(x, y, z, v, s=50, c = c, cmap = cmhot) 
plt.show() 

非常感謝任何人提前給我看看這個。

+0

您能發佈一些演示該問題的示例/簡化/假數據嗎?否則很難運行你的代碼。 – 2013-02-25 17:26:51

+0

藍色甚至沒有'熱'.... – tacaswell 2013-02-25 17:38:07

+0

也,你使用什麼版本的mpl/OS和你如何安裝mpl? – tacaswell 2013-02-25 17:43:33

回答

2
from pylab import * 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

th = np.linspace(0, 2 * pi, 100) 
x = cos(th) 
y = sin(th) 
z = th 
v = cos(th) * sin(th) 
c = abs(v) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
cmhot = plt.get_cmap("hot") 
cax = ax.scatter(x, y, z, v, s=50, c = c, cmap = cmhot) 
plt.show() 

主要生產example image

看到這個Matplotlib 3D scatter color lost after redraw,報告從1.1.0版本同樣的事情(和有一個變通)。這是mpl中的一箇舊bug,已在更高版本中修復(PR here

+0

當我在上面運行你的代碼時,我將所有東西都變成藍色。也許我應該重新安裝pythonxy? 不,根本沒有錯誤。 – samanthapants 2013-02-25 17:44:05

相關問題