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