比例Mayavi散点图

时间:2014-03-04 06:14:04

标签: python mayavi

我正在尝试在mayavi中制作3D散点图。但是,输入数据的比例非常不同。请参阅下面的测试示例:

x = np.linspace(0, 1, 100)
y = np.linspace(0, 100, 100)
x, y = np.meshgrid(x,y)
x = [xi for xj in x for xi in xj]
y = [yi for yj in y for yi in yj]
z = [random.randint(0,10)/10.0 for i in range(10000)]
from mayavi import mlab
s = mlab.points3d(x, y, z, scale_factor = 0.1)
mlab.show()

现在,考虑到y轴与其他轴相比很长,输出图被压缩成几乎一条线。如何使图表更具视觉可读性,以便轴范围具有可比性?

1 个答案:

答案 0 :(得分:5)

以非常意想不到的方式使用extent参数:

s = mlab.points3d(x, y, z, mode = 'point', extent = [0,1,0,1,0,1])

显然,mayavi中的坐标不是“情节”意义上的坐标,它们实际上是在窗口中定义您的3D对象。然后,extent表示将整个内容扩展为extent值。如果它们都设置为相同的值,则会得到方形图。问题是,如果你使用球体,它们也会缩放并变成椭圆体。这就是为什么我不得不在这里使用mode = 'point'

要添加具有适当标记的轴,您需要添加以下内容:

mlab.axes(s, ranges = [min(x), max(x), min(y), max(y), min(z), max(z)])