代码之家  ›  专栏  ›  技术社区  ›  Manolete

行的曲面图

  •  0
  • Manolete  · 技术社区  · 8 年前

    N 行和 M 柱。我想创建一些可以看到的曲面图 N个

    head output.txt
    
    0.001194  0.001184  0.001499  0.002410  0.002337  0.002323  0.001685 0.01194
    0.002260  0.002152  0.002390  0.001305  0.001270  0.001303  0.001155 0.01194
    0.001232  0.002307  0.002127  0.001672  0.002278  0.002427  0.002136 0.01194
    0.001950  0.001359  0.001137  0.001168  0.001208  0.001189  0.002564 0.01194   
    0.002334  0.002345  0.002461  0.002223  0.002138  0.002352  0.001299 0.01194
    0.001320  0.001184  0.001239  0.001466  0.002454  0.002349  0.002383 0.01194
    

    我正在使用的代码

    import numpy as np
    import matplotlib.pyplot as plt
    
    data = np.loadtxt('output.txt')
    
    X = np.arange(len(data))
    plt.plot(X, data)
    
    plt.show()
    

    但这只是一个二维图。

    我还尝试了以下方法:

    from mpl_toolkits.mplot3d import Axes3D
    
    nx = len(data)
    ny = len(data[0])
    x = range(nx)
    y = range(ny)
    
    hf = plt.figure()
    ha = hf.add_subplot(111, projection='3d')
    
    X, Y = np.meshgrid(x, y)  
    ha.plot_surface(X, Y, data)
    

    但是这会产生一个错误

    ValueError: shape mismatch: objects cannot be broadcast to a single shape
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Manolete    8 年前

    我成功了。问题出在 nx ny .

    nx = len(data[0])
    ny = len(data)
    
    x = range(nx)
    y = range(ny)
    
    hf = plt.figure()
    ha = hf.add_subplot(111, projection='3d')
    
    X, Y = np.meshgrid(x, y)  
    ha.plot_surface(X, Y, data)
    

    enter image description here