Python 从matplotlib中的点坐标打印三维曲面

Python 从matplotlib中的点坐标打印三维曲面,python,matplotlib,Python,Matplotlib,如何在matplotlib中执行类似操作,但不是使用点而是使用曲面?(我有点的坐标) 您必须从ax对象使用plot\u surface命令。我将从我自己的绘图库中提供一个代码片段,您只需根据需要对其进行重构。但是,以前曾提出过此类(或高度相似的)问题(例如) PS:最近有一连串的反对票对这个答案投了反对票。因此,我要补充的是,最初的问题表述得很糟糕,这个答案正是OP基于与OP的私人对话想要的。可能的重复抛出错误:参数Z必须是二维的@mrglud正确,您正在使用的数据的格式不能与surface_

如何在matplotlib中执行类似操作,但不是使用点而是使用曲面?(我有点的坐标)


您必须从
ax
对象使用
plot\u surface
命令。我将从我自己的绘图库中提供一个代码片段,您只需根据需要对其进行重构。但是,以前曾提出过此类(或高度相似的)问题(例如)



PS:最近有一连串的反对票对这个答案投了反对票。因此,我要补充的是,最初的问题表述得很糟糕,这个答案正是OP基于与OP的私人对话想要的。

可能的重复抛出错误:
参数Z必须是二维的
@mrglud正确,您正在使用的数据的格式不能与surface_plot的格式一致。@BasJansen,因为在您的回答中,您假设每对(x_i,y_j)都有一个对应的Z值,这意味着Z是一个2D数组。问题是“从点坐标”,这意味着Z根本没有2D数组…@BasJansen当然应该有一个Z。点是坐标(X,Y)可能不是网格,在这种情况下,你有一个Nx3数组,有N(X,Y,Z)个坐标,Z不是2D数组——这是最初的问题,不过…我支持否决票。该问题要求使用与
scatter
函数相同的界面,提供基于坐标的解决方案@BasJansen,您刚才提供了一种奇特的方法来调用
plot\u surface
,这是不同的
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

#X = ...
#Y = ... Some coordinates points from file it is list
#Z = ...

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.scatter(X, Y, Z, c='r')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def surface_plot(X,Y,Z,**kwargs):
    """ WRITE DOCUMENTATION
    """
    xlabel, ylabel, zlabel, title = kwargs.get('xlabel',""), kwargs.get('ylabel',""), kwargs.get('zlabel',""), kwargs.get('title',"")
    fig = plt.figure()
    fig.patch.set_facecolor('white')
    ax = fig.add_subplot(111, projection='3d')
    ax.plot_surface(X,Y,Z)
    ax.set_xlabel(xlabel)
    ax.set_ylabel(ylabel)
    ax.set_zlabel(zlabel)
    ax.set_title(title)
    plt.show()
    plt.close()