2016-12-13 46 views
1

我想繪製一個4維數組作爲第四維顏色。這裏是我的矩陣樣本:Matplotlib二維數組中的4D數據

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.scatter(data[:,0],data[:,1],data[:,2], c=data[:,3], cmap=plt.hot()) 
plt.show() 

我:

[[ 4.216 0.  1.  0. ] 
[ 5.36 0.  1.  0. ] 
[ 5.374 0.  2.  0. ] 
..., 
[ 0.294 0.  1.  0. ] 
[ 0.314 0.  2.  0. ] 
[ 0.304 0.  1.  0. ]] 

第4列,只有當我嘗試使用這個腳本來繪製它包含的值0,1和2

所以得到這個錯誤:

TypeError: can't multiply sequence by non-int of type 'float' 
+0

使用numpy數組,而不是普通列表 –

回答

2

這不是一個4D陣列。這是一個有4列的2D數組(2維可以稱爲「行」和「列」)。但是我看到你想說的 - 每行可以被解釋爲描述四維空間中的一個點,第四個「維度」是彩色的。

二維性實際上是問題的關鍵。我懷疑你的data變量是numpy.matrix而不是香草numpy.array。甲matrix是特定類別的2D陣列的具有各種特殊的性質,包括一個事實,即它的一個切片(例如,data[:, 0])是仍然 2維matrix對象,而.scatter()預計每個參數是一個一維陣列。

修復的方法是說:

data = numpy.asarray(data) 

您的數據從matrix轉換爲普通陣列其列片將是一維的。

順便說一句:你可能打算說cmap='hot'。對plt.hot()的呼叫設置了默認色彩映射(因此您的數字看起來可能正確,但有副作用),但實際上它返回None