2011-03-30 95 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()