(x-y)^2 的 matplotlib 曲面图
matplotlib surface plot for (x-y)^2
任何人都可以帮我绘制方程 f(x,y) = (x-y)^2
的 3D 曲面图
Z轴应该代表函数f(x,y)
我有以下功能:
def fnc(X):
return (X[0] - X[1]) ** 2
这里的X是一个numpy数组,第一个参数为X,第二个参数为Y。
我特别需要它是这样的。所以请不要建议我更改签名。 ;)
我尝试了以下 this 解决方案:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc1([np.linspace(-5,5,100) , np.linspace(-6,6,100)])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
但是我看错了剧情
你的fnc
错了。让你的表面就像Z=(X-Y)**2
一样。这是最佳解决方案,因为 Z
的所有计算都将被矢量化。
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = (X-Y)**2
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
要绘制的数组 Z
应该是一个二维数组,就像 X
和 Y
是二维数组一样,这样对于来自 [=12= 的每一对值] 和 Y
你正好在 Z
中得到一分。因此,使用这些数组 X
和 Y
作为 fnc
函数的输入是有意义的,Z = fnc([X,Y])
完整的代码看起来像
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
def fnc(X):
return (X[0] - X[1]) ** 2
fig = plt.figure()
ax = fig.add_subplot(111, projection=Axes3D.name)
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc([X,Y])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.view_init(elev=15, azim=-118)
plt.show()
任何人都可以帮我绘制方程 f(x,y) = (x-y)^2
Z轴应该代表函数f(x,y)
我有以下功能:
def fnc(X):
return (X[0] - X[1]) ** 2
这里的X是一个numpy数组,第一个参数为X,第二个参数为Y。 我特别需要它是这样的。所以请不要建议我更改签名。 ;)
我尝试了以下 this 解决方案:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc1([np.linspace(-5,5,100) , np.linspace(-6,6,100)])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
但是我看错了剧情
你的fnc
错了。让你的表面就像Z=(X-Y)**2
一样。这是最佳解决方案,因为 Z
的所有计算都将被矢量化。
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = (X-Y)**2
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
要绘制的数组 Z
应该是一个二维数组,就像 X
和 Y
是二维数组一样,这样对于来自 [=12= 的每一对值] 和 Y
你正好在 Z
中得到一分。因此,使用这些数组 X
和 Y
作为 fnc
函数的输入是有意义的,Z = fnc([X,Y])
完整的代码看起来像
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
def fnc(X):
return (X[0] - X[1]) ** 2
fig = plt.figure()
ax = fig.add_subplot(111, projection=Axes3D.name)
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc([X,Y])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.view_init(elev=15, azim=-118)
plt.show()