编程语言
首页 > 编程语言> > python – 缩放Mayavi散点图

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轴与其他轴相比非常长,输出图被压缩成几乎一条线.如何使图表更具视觉可读性,以便轴范围具有可比性?

解决方法:

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

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

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

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

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

标签:mayavi,python
来源: https://codeday.me/bug/20190831/1772335.html