matplotlib 绘制3D直方图/条形图

ozxc1zmp  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(187)

我在scipy/numpy中有一个Nx 3矩阵,我想用它制作一个三维条形图,其中X轴和Y轴由矩阵的第一列和第二列的值确定,每个条形的高度是矩阵的第三列,条形的数量由N确定。
换句话说,如果“数据”是矩阵,则:

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

并且每个镜头(数据)应该有一个条
我如何在Matplotlib中做到这一点?
第二,作为一个变体,我如何做同样的事情,但这次直方图的酒吧到N箱在每个X,Y,Z维?也就是说,不是每个点的条形图,而是将数据直方图化到每个维度中的那些箱中,并为每个箱绘制条形图。

pvabu6sv

pvabu6sv1#

这是一个3D条形图的例子。Here is another
Numpy有一个名为histogram2d的函数来完成你想要的矩形装箱。

yv5phkfx

yv5phkfx2#

我很难从示例中正确地塑造数据的“高度”,但最终让它与下面的代码一起工作。这里,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()

相关问题