我正试图在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()
Run Code Online (Sandbox Code Playgroud)
现在,考虑到y轴与其他轴相比很长,输出图被压缩成几乎一条线.如何使图表更具视觉可读性,以便轴范围具有可比性?
extent以非常意想不到的方式使用参数:
s = mlab.points3d(x, y, z, mode = 'point', extent = [0,1,0,1,0,1])
Run Code Online (Sandbox Code Playgroud)
显然,mayavi中的坐标不是"情节"意义上的坐标,它们实际上是在窗口中定义您的3D对象.在extent接着说缩放整个事情的extent价值.如果它们都设置为相同的值,则会得到方形图.问题是,如果你使用球体,它们也会缩放并变成椭圆体.这就是我不得不在mode = 'point'这里使用的原因.
要添加具有适当标记的轴,您需要添加以下内容:
mlab.axes(s, ranges = [min(x), max(x), min(y), max(y), min(z), max(z)])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2027 次 |
| 最近记录: |