从3D直方图矩阵中制作3D图形

时间:2014-04-04 15:56:02

标签: python matplotlib 3d histogram mayavi

我正在使用python,我遇到以下问题:

我的数据是由3D点组成的,实际上可以制作简单的散点图。因此,我必须将数据“bin”到网格中。

我是通过使用3D直方图制作的(我还有其他优势可以使用3D直方图):

import numpy as np
"""Where x,y,z are given and binx,biny,binz are calculated some steps before""" 
values = np.column_stack((x,y,z))
H, edges = np.histogramdd(values, bins=(binx,biny,binz))

因此现在我有一个带有尺寸的“矩阵”H(binx,biny,binz)。我把它想象成二维直方图的切片,它们以z-dircetion堆叠(并且数量是binz)。

所以我可以用Axes3D将它们绘制成一个3D立方体,沿着z轴有一个单独的2D直方图。这样的事情:3D-Stacked 2D histograms in matplotlib pyplot

但是我知道我想用这些切片制作一个完整的3D图形。

我考虑过两种方式:

  • 使用这些直方图制作3D密度图(使用高斯平滑)并使用mayavi绘制此图
  • 或另一种可能性(我不喜欢),只在3D网格中绘制2D直方图的单元格,颜色应该指示单元格中的“真实点”数

但我连一个都做不到!我可以做很多类似的任务,但没有什么能真正拍摄3D直方图并制作出我想要的情节。

1 个答案:

答案 0 :(得分:0)

您是否看过matplotlib的3D绘图功能?

以下是一个示例:http://matplotlib.org/examples/mplot3d/scatter3d_demo.html