如何在 3D 图形中绘制函数曲线 - Python

How to plot a curve for a function in a 3D graphic - Python

我有这个功能:

z = 0.000855995633558468*x**2 + 0.0102702516120239*x + 0.00451027901725375*y**2 - 2.23785431578513*y + 251.029058292935

我还有此函数中点坐标的列表 (X, Y, Z)。然后我用这段代码来绘制那个坐标的图:

fig = plt.figure()
ax = fig.gca(projection='3d')
plt.plot(X, Y, Z)

plt.show() 

如您所见,使用这段代码,我按段加入了点。如何绘制通过这些点的曲线?

简而言之,Python 不知道所有的 xyz 点需要如何相互连接才能创建一个表面,所以它只是在它们之间画线。

如果您想绘制一个表面,其 z 坐标是其 x 和 y 坐标的函数,您需要创建一个包含所有可能的 xy 坐标组合的网格,并获得生成的 z 网格。然后你可以绘制网格。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

def z_func(x, y):
    z = 0.000855995633558468 * x ** 2 + 0.0102702516120239 * x + \
        0.00451027901725375 * y ** 2 - 2.23785431578513 * y + \
        251.029058292935
    return z

# Creates a 1D array of all possible x and y coordinates
x_coords = np.linspace(-30, 30, 100)
y_coords = np.linspace(180, 220, 100)

# Creates 2D array with all possible combinations of x and y coordinates,
# so x_grid.shape = (100, 100) and y_grid.shape = (100, 100)
[x_grid, y_grid] = np.meshgrid(x_coords, y_coords)

# Evaluates z at all grid points
z_grid = z_func(x_grid, y_grid)

# Plotting
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x_grid,y_grid,z_grid)
plt.show()