我有一个scipy / numpy的Nx3矩阵,我想用它制作一个三维条形图,其中X和Y轴由矩阵的第一列和第二列的值确定,高度每个条形图是矩阵中的第三列,条形数由N确定。
换句话说,如果“data”是矩阵,那么:
data[:, 0] # values of X-axis
data[:, 1] # values of Y-axis
data[:, 2] # values of each Z-axis bar
每个len(数据)应该有一个条
如何在Matplotlib中执行此操作?
其次,作为其中的一个变体,我怎么能做同样的事情,但是这次将条形直方图分成每个X,Y,Z维度的N个区间?即而不是每个点的条形,只需将数据直方图编入每个维度的那些箱子,并为每个箱子绘制一个条形。
非常感谢你的帮助。
答案 0 :(得分:4)
Here is one example。 Here is another
Numpy有一个名为histogram2d的函数来进行你想要的矩形分级。
答案 1 :(得分:1)
我从示例中正确地塑造了我的数据的“高度”有点困难,但最终还是使用了以下代码。这里,Z是一个包含所有数据的三维数组,x和rval基本上是对应于数据点的二维索引。
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()