【问题标题】:3D Surface Plots Using Mayavi.mlab使用 Mayavi.mlab 绘制 3D 曲面图
【发布时间】:2015-03-25 18:35:10
【问题描述】:

我设法在 3D 环境中绘制了多个 2D 直方图,但我想将它们绘制为 3D 表面。我一直试图通过使用 mayavi.mlab 的 surf 函数和 3 个 1D 数组来绘制它。但是当我这样做时,我得到了 ZeroDivisionErrors。

这些是我的数组:

x = [-90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0 , -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, - 80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0、-50.0、-40.0、-30.0、-20.0、-10.0、0.0、10.0、20.0、30.0、40.0、50.0、60.0、70.0、80.0、-90.0、-80.0、-70.0、-60.0、-50.0 , -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, - 30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0、20.0、30.0、40.0、50.0、60.0、70.0、80.0、-90.0、-80.0、-70.0、-60.0、-50.0、-40.0、-30.0、-20.0、-10.0、0 .0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0、30.0、40.0、50.0、60.0、70.0、80.0、-90.0、-80.0、-70.0、-60.0、-50.0、-40.0、-30.0、-20.0、-10.0、0.0、10.0、20.0、30.0、40.0 , 50.0, 60.0, 70.0, 80.0, -90.0, -80.0, -70.0, -60.0, -50.0, -40.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0]

y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12]

z = [554, 310, 157, 97, 108, 169, 86, 64, 22, 20, 8, 3, 0, 0, 0, 0, 0, 0, 424, 354, 165, 112, 156, 119, 55, 39, 19, 15, 7, 0, 0, 0, 0, 0, 0, 0, 276, 455, 281, 176, 135, 98, 51, 30, 24, 17, 10, 2, 0, 0, 0, 0, 0, 0, 130, 263, 330, 283, 167, 90, 39, 30, 15, 7, 8, 4, 0, 0, 0, 0, 0, 0, 61, 168, 259, 349, 283, 116, 42, 33, 13, 13, 7, 1, 0, 0, 0, 0, 0, 0, 44, 89, 124, 239, 384, 200, 77, 31, 19, 12, 9, 0, 0, 0, 0, 0, 0, 0, 27, 61, 97, 164, 441, 315, 82, 33, 12, 11, 1, 3, 0, 0, 0, 0, 0, 0, 38, 43, 106, 227, 402, 319, 94, 20, 14, 9, 16, 2, 0, 0, 0, 0, 0, 0, 54, 91, 168, 269, 392, 224, 72, 34, 18, 9, 4, 1, 0, 0, 0, 0, 0, 0, 100, 179, 260, 361, 341, 168, 99, 54, 28, 18, 9, 1, 0, 0, 0, 0, 0, 0, 215, 277, 245, 214, 181, 143, 128, 69, 44, 15, 12, 5, 0, 0, 0, 0, 0, 0, 427, 331, 207, 162, 120, 98, 127, 80, 43, 43, 10, 2, 0, 0, 0, 0, 0, 0]

对我的问题的任何帮助将不胜感激!

提前谢谢你。

【问题讨论】:

    标签: python mayavi


    【解决方案1】:

    你希望你的数组是二维的:

    import numpy as np
    x = np.array(x).reshape((12, 18))
    y = np.array(y).reshape((12, 18))
    z = np.array(z).reshape((12, 18))
    mlab.surf(x, y, z, ...)
    

    【讨论】:

    • 对不起,我没有使用 3D 绘图的经验,但是当我使用您建议没有绘制任何内容的代码时,我只会得到一个空白的 Mayavi 场景。我还有什么要补充的吗?
    • mlab.show(),如果您未设置为交互模式。见docs.enthought.com/mayavi/mayavi/mlab.html
    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多