用Python中的Matplotlib绘制三维直方图/条形图

2024-05-20 09:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在scipy/numpy中有一个N X 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中如何执行此操作?

其次,作为这个的一个变体,我怎么能做同样的事情,但这一次柱状图在每个X,Y,Z维度中把条分成N个箱子?一、 e.不用每个点都有一个条形图,只需在每个维度将数据直方图化到这些存储箱中,并为每个存储箱绘制一个条形图。

非常感谢你的帮助。


Tags: of数据numpydata数量高度bar矩阵
2条回答

三维条形图的Here is one exampleHere is another

Numpy有一个名为histogram2d的函数来做您想要的矩形装箱。

从这些例子中,我很难正确地确定数据的“高度”,但最终还是使用了下面的代码。这里,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()

相关问题 更多 >