酷代码 AI
菜单
服务商

使用Matplotlib绘制z = xy + sqrt(xy)的曲面图

使用 Python 的 `matplotlib` 库和 `numpy` 库可以绘制 `z = xy + sqrt(xy)` 的曲面。以下是实现代码: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 定义 x 和 y 的取值范围 x = np.linspace(-6, 6, 100) y = np.linspace(-6, 6, 100) # 生成网格点坐标矩阵 X, Y = np.meshgrid(x, y) # 计算 z 值,注意要避免负数平方根 # 这里使用 np.where 函数,当 xy >= 0 时计算 z,否则设为 np.nan Z = np.where(X * Y >= 0, X * Y + np.sqrt(X * Y), np.nan) # 创建一个 3D 图形对象 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制曲面 surf = ax.plot_surface(X, Y, Z, cmap='viridis', edgecolor='none') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 设置 plt.title('Surface plot of z = xy + sqrt(xy)') # 添加颜色条 fig.colorbar(surf, shrink=0.5, aspect=5) # 显示图形 plt.show() ``` ### 代码解释 1. **导入必要的库**:导入 `numpy`、`matplotlib.pyplot` 和 `mpl_toolkits.mplot3d` 库。 2. **定义取值范围**:使用 `np.linspace` 函数定义 `x` 和 `y` 的取值范围为 -6 到 6,每个方向上有 100 个点。 3. **生成网格点坐标矩阵**:使用 `np.meshgrid` 函数生成 `x` 和 `y` 的网格点坐标矩阵 `X` 和 `Y`。 4. **计算 z 值**:使用 `np.where` 函数计算 `z` 值,避免负数平方根。当 `xy >= 0` 时计算 `z = xy + sqrt(xy)`,否则设为 `np.nan`。 5. **创建 3D 图形对象**:使用 `plt.figure()` 创建一个图形对象,使用 `fig.add_subplot(111, projection='3d')` 创建一个 3D 子图。 6. **绘制曲面**:使用 `ax.plot_surface` 函数绘制曲面,设置颜色映射为 `viridis`。 7. **设置坐标轴标签和**:使用 `ax.set_xlabel`、`ax.set_ylabel` 和 `ax.set_zlabel` 设置坐标轴标签,使用 `plt.title` 设置。 8. **添加颜色条**:使用 `fig.colorbar` 函数添加颜色条。 9. **显示图形**:使用 `plt.show()` 显示图形。 ######[AI问答 | 706点数解答 | 2026-02-15 14:13:17]

相关提问
发财导航,免费问AI
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]