绘制3D直方图/条形图

5

我在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(data),应该有一个条形图

我如何在Matplotlib中实现这个?

其次,作为这个的一种变体,我如何做相同的事情,但这一次将条形图分成每个X、Y、Z维度的N个bin?也就是说,不是针对每个数据点绘制条形图,而是将数据在每个维度上分成那些bin,并为每个bin绘制一个条形图。

2个回答

5

我该如何为x、y和z轴添加标签? - user248237
另外,当我使用ax.scatter制作3D散点图时,它会自动以alpha透明度绘制一些点--我该如何去除透明度并绘制所有点而不带透明度? - user248237

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接