代码之家  ›  专栏  ›  技术社区  ›  Wahyu Hadinoto

使用自定义数据三维打印曲面

  •  0
  • Wahyu Hadinoto  · 技术社区  · 4 年前

    示例数据如下:

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d as Axes3D
    from matplotlib import cm
    import numpy as np
    
    x = np.linspace(1,4,10)
    y = np.linspace(3,4,10)
    z = np.linspace(10,20,7)
    data = np.random.rand(10,7)
    

    和自定义绘图,如下所示:

    xx = np.ones((10,7))
    yy = np.ones((10,7))
    zz = np.ones((10,7))
    for i in range(7):
        xx[:,i] = x
        yy[:,i] = y
    for i in range(10):
        zz[i,:] = z
    

    线框如下:

    enter image description here

    当我尝试这样获取表面颜色时:

    ax = plt.figure().add_subplot(111,projection = '3d')
    ax.plot_surface(xx,yy,zz,facecolor = cm.coolwarm(data))
    plt.show()
    

    错误如下:

    ValueError:RGBA序列的长度应为3或4

    我不明白为什么会失败。我需要这个自定义绘图来替换网格(真正需要这个绘图作为我的输出)。有人能解决这个问题吗?Ty

    0 回复  |  直到 4 年前
        1
  •  1
  •   Mr. T Andres Pinzon    4 年前

    colors= cm.coolwarm(data)
    ax.plot_surface(xx,yy,zz,cmap = cm.coolwarm, facecolors =colors)

    你可以在上阅读更多关于这方面的信息 https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html?highlight=plot_surface#mpl_toolkits.mplot3d.axes3d.Axes3D.plot_surface

    结果:

    enter image description here