【问题标题】:Scale Mayavi scatter plot缩放 Mayavi 散点图
【发布时间】:2014-03-04 06:14:04
【问题描述】:

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

【问题讨论】:

    标签: python mayavi


    【解决方案1】:

    使用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)]) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2015-02-11
      相关资源
      最近更新 更多