Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib线框打印/三维打印方式_Python_3d_Plot_Matplotlib_Wireframe - Fatal编程技术网

Python matplotlib线框打印/三维打印方式

Python matplotlib线框打印/三维打印方式,python,3d,plot,matplotlib,wireframe,Python,3d,Plot,Matplotlib,Wireframe,我想用matplotlib制作一个3d绘图 数据如下:我有一个矩阵,每行包含3d绘图的Y坐标。每行第一个元素都是三维打印的X坐标。最后,第二个矩阵包含X,Y位置处每个点的高。因此,第二个矩阵包含我的Z坐标。这两个矩阵都是Python中的数组数组。我想知道如何转换数据以获得: 对应于X的每个1d信号的绘图,如图所示(在线提供照片) 相同数据的线框图,如下所示 我已经为线框工作编写了一个辅助函数 ######## HELPER FOR PLOT 3-D def plot_3d(name,

我想用matplotlib制作一个3d绘图

数据如下:我有一个矩阵,每行包含3d绘图的Y坐标。每行第一个元素都是三维打印的X坐标。最后,第二个矩阵包含X,Y位置处每个点的高。因此,第二个矩阵包含我的Z坐标。这两个矩阵都是Python中的数组数组。我想知道如何转换数据以获得:

  • 对应于X的每个1d信号的绘图,如图所示(在线提供照片)
  • 相同数据的线框图,如下所示
我已经为线框工作编写了一个辅助函数

 ########  HELPER FOR PLOT 3-D

 def plot_3d(name,X,Y,Z):

     fig = plt.figure(name)
     ax = fig.gca(projection='3d')
     X = np.array(X)
     Y = np.array(Y)
     Z = np.array(Z)
     ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)
     ax.set_xlabel('X Label')
     ax.set_ylabel('Y Label')
     plt.show()
但我不知道如何转换数据X,Y,Z以使它们符合matplotlib函数的要求,matplotlib函数需要X,Y,Z的二维列表

对于第一个图形,我阅读了帮助,并希望在3d中使用2d绘图。示例源代码给出:

x = np.linspace(0, 1, 100)
y = np.sin(x * 2 * np.pi) / 2 + 0.5
ax.plot(x, y, zs=0, zdir='z', label='zs=0, zdir=z')
其中z是常数坐标。在我的例子中,x是常数坐标。我适应

        fig = plt.figure('2d profiles')
        ax = fig.gca(projection='3d')
        for i in range(10):
             x = pt  ## this is a scalar
             y = np.array(y)
             z = np.array(z)
             ax.plot(xs = x, y, z, xdir='x')
        plt.show()
但是有一个警告:
关键字arg之后是非关键字arg
。如何修复


感谢并问候

关于在3D中显示一系列矢量,我提供了以下“几乎正常”的解决方案:

def visualizeSignals(self, imin, imax):

    times = self.time[imin:imax]
    nrows = (int)((times[(len(times)-1)] - times[0])/self.mod) + 1

    fig = plt.figure('2d profiles')
    ax = fig.gca(projection='3d')
    for i in range(nrows-1):
        x = self.mat1[i][0] + self.mod * i
        y = np.array(self.mat1T[i])
        z = np.array(self.mat2[i])
        ax.plot(y, z, zs = x, zdir='z')

    plt.show()
对于二维曲面或网格划分,我使用网格划分。请注意,一旦您知道如何构建网格网格,就可以自己复制网格网格。有关meshgrid的更多信息,请参阅

下面是代码(不能这样使用它,因为它引用了类成员,但您可以基于我使用的matplotlib中的3d plot方法构建代码)


关于在3D中显示一系列矢量,我提出了以下“几乎可行”的解决方案:

def visualizeSignals(self, imin, imax):

    times = self.time[imin:imax]
    nrows = (int)((times[(len(times)-1)] - times[0])/self.mod) + 1

    fig = plt.figure('2d profiles')
    ax = fig.gca(projection='3d')
    for i in range(nrows-1):
        x = self.mat1[i][0] + self.mod * i
        y = np.array(self.mat1T[i])
        z = np.array(self.mat2[i])
        ax.plot(y, z, zs = x, zdir='z')

    plt.show()
对于二维曲面或网格划分,我使用网格划分。请注意,一旦您知道如何构建网格网格,就可以自己复制网格网格。有关meshgrid的更多信息,请参阅

下面是代码(不能这样使用它,因为它引用了类成员,但您可以基于我使用的matplotlib中的3d plot方法构建代码)


你是说例外。尝试将线
ax.plot(xs=x,y,z,xdir='x')
更改为
ax.plot(xs=x,ys-y,zs=z,xdir='x')
您的意思是异常。尝试将线
ax.plot(xs=x,y,z,xdir='x')
更改为
ax.plot(xs=x,ys-y,zs=z,xdir='x')