绘制抛物面拟合

Plot paraboloid surface fitting

如何在使用 Python 拟合后绘制抛物面?为了得到 plot

import numpy as np
import scipy.optimize as opt
import matplotlib.pyplot as plt

doex = [0.4,0.165,0.165,0.585,0.585]
doey = [.45, .22, .63, .22, .63]
doez = np.array([1, .99, .98,.97,.96])

def paraBolEqn(data,a,b,c,d):
    x,y = data
    return -(((x-b)/a)**2+((y-d)/c)**2)+1.0


popt,pcov=opt.curve_fit(paraBolEqn,np.vstack((doex,doey)),doez,p0=[1.5,0.4,1.5,0.4])
print(popt)

您需要知道的一切都记录在 mplot3d tutorial 中,其中介绍了在 matplotlib 中制作 3d 图的不同方法。

可以使用方法 Axes3D.plot_wireframeAxes3D.scatter:

重现您想要的情节
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111, projection='3d')

x, y = np.meshgrid(np.linspace(np.min(doex), np.max(doex),10), np.linspace(np.min(doey),np.max(doey), 10))
ax.plot_wireframe(x, y, paraBolEqn((x,y), *popt))
ax.scatter(doex, doey, doez, color='b')

结果如下图: