2011-03-30 75 views
5

我在scipy/numpy中有一個Nx3矩陣,我想製作一個三維條形圖,其中X和Y軸由第一個和第二個矩陣的第二列中,每個條的高度是在基質中的第三列和的條的數量由N確定在python中繪製3d直方圖/ barplot matplotlib

換句話說,如果「數據」是則矩陣:

data[:, 0] # values of X-axis 
data[:, 1] # values of Y-axis 
data[:, 2] # values of each Z-axis bar 

並且每個len應該有一個條(數據)

如何在Matplot中執行此操作LIB?其次,作爲一個變體,我怎樣才能做同樣的事情,但是這次在每個X,Y,Z維度上將柱狀圖直方圖分成N個分箱?即而不是每個點的條形圖,只需將數據直方圖分解到每個維度中的這些條目中,併爲每個條形圖繪製一個條形圖。

非常感謝您的幫助。

回答

4

Here is one example的3D條形圖。 Here is another

Numpy有一個叫做histogram2d的功能來做你想要的矩形裝倉。

+0

如何標記x,y和z軸? – user248237dfsf 2011-03-30 17:08:12

+0

此外,當我使用ax.scatter製作三維散點圖時,它會自動繪製一些具有alpha透明度的點 - 我如何去除該點並繪製不透明度的所有點? – user248237dfsf 2011-03-30 17:09:31

1

我有一段時間很難從示例中正確地塑造我的數據的'高度',但最終讓它與下面的代碼一起工作。這裏,Z是一個包含我所有數據的3維數組,而x和rval基本上是與數據點對應的2-d索引。

xs = np.arange(biopsy_num) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
for y in (np.arange(r_sweep)): 
    z = Z[:,y] 
    ax.bar(xs, z, zs=y, zdir='y', alpha=0.8) 

ax.set_xlabel('biopsies') 
ax.set_ylabel('radius of biopsy') 
ax.set_zlabel('Shannon Index') 

plt.show()