分别利用mesh,surf,fmesh,fsurf绘制z=x²e^(-x²+y²)在-2≤x≤2,-2≤y≤2的图形,要求:利用subplot绘制子图,将整个绘图窗口分成4个区域。
时间: 2023-05-21 14:00:49 浏览: 252
好的,以下是我的回答:
可以使用以下代码来绘制z=x²e^(-x² y²)在-2≤x≤2,-2≤y≤2的图形:
import matplotlib.pyplot as plt
import numpy as np
# 定义函数
def f(x, y):
return x**2 * np.exp(-x**2 * y**2)
# 定义x, y的取值范围和步长
x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(x, y)
# 绘制图形
fig = plt.figure(figsize=(10, 10))
ax1 = fig.add_subplot(2, 2, 1, projection='3d')
ax1.plot_surface(X, Y, f(X, Y), cmap='coolwarm')
ax1.set_title('mesh')
ax2 = fig.add_subplot(2, 2, 2, projection='3d')
ax2.plot_surface(X, Y, f(X, Y), rstride=1, cstride=1, cmap='coolwarm')
ax2.set_title('surf')
ax3 = fig.add_subplot(2, 2, 3, projection='3d')
ax3.plot_wireframe(X, Y, f(X, Y), cmap='coolwarm')
ax3.set_title('fmesh')
ax4 = fig.add_subplot(2, 2, 4, projection='3d')
ax4.plot_trisurf(X.flatten(), Y.flatten(), f(X, Y).flatten(), cmap='coolwarm')
ax4.set_title('fsurf')
plt.show()
这段代码会将整个绘图窗口分成4个区域,分别绘制mesh、surf、fmesh、fsurf的图形。其中,subplot函数的前两个参数表示将整个绘图窗口分成2行2列,第三个参数表示当前子图的位置。projection参数表示绘制的图形类型,cmap参数表示颜色映射。
阅读全文