【100天精通Python】Day66:Python可视化_Matplotlib 3D绘图,绘制3D曲面图、3D填充图,3D极坐标图,示例+代码

目录

[1 绘制曲面图](#1 绘制曲面图)

[2 绘制3D填充图](#2 绘制3D填充图)

[3 绘制极坐标图](#3 绘制极坐标图)


1 绘制曲面图

当绘制3D曲面图时,mpl_toolkits.mplot3d 模块中的 Axes3D 对象提供了多种方法来呈现不同类型的曲面图。以下是一些常见的3D曲面图类型以及示例:

曲面图 :使用 plot_surface 函数来绘制平滑的曲面图。

python 复制代码
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建示例数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建图形和子图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制曲面图
ax.plot_surface(X, Y, Z, cmap='viridis')

# 添加标题
plt.title('3D曲面图示例')

# 添加坐标轴标签
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')

# 显示图形
plt.show()

彩虹曲面图 :使用 plot_surface 函数,并通过设置 cmap 参数为"rainbow"来绘制带有彩虹颜色映射的曲面图。

python 复制代码
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建示例数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建图形和子图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制带有彩虹颜色映射的曲面图
ax.plot_surface(X, Y, Z, cmap='rainbow')

# 添加标题
plt.title('带有彩虹颜色映射的3D曲面图示例')

# 添加坐标轴标签
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')

# 显示图形
plt.show()

2 绘制3D填充图

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y = np.linspace(0, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制3D填充图
ax.plot_surface(X, Y, Z, cmap='coolwarm')

# 添加填充区域1
ax.plot([x[0], x[-1]], [y[0], y[0]], [Z[0][0], Z[0][-1]], color='blue', alpha=0.5)
ax.plot([x[0], x[-1]], [y[-1], y[-1]], [Z[-1][0], Z[-1][-1]], color='red', alpha=0.5)

# 添加填充区域2
ax.plot([x[0], x[0]], [y[0], y[-1]], [Z[0][0], Z[-1][0]], color='blue', alpha=0.5)
ax.plot([x[-1], x[-1]], [y[0], y[-1]], [Z[0][-1], Z[-1][-1]], color='red', alpha=0.5)

# 设置坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show()

首先,我们创建了数据集 ​X​、​Y​ 和 ​Z​,这些数据用于定义三维空间中的坐标和值。然后,我们创建了图形对象和轴对象,并使用 ​plot_surface​ 函数将数据展示为3D曲面。接下来,通过调用 ​plot​ 函数来绘制填充区域的边界线,使用不同颜色和透明度的线条表示不同的区域。最后,我们设置了坐标轴标签并显示图形。

3 绘制极坐标图

3D极坐标图可以使用 ​polar​ 函数进行绘制。该函数使用极坐标表示数据,并通过指定角度、半径和值来确定数据点的位置。

下面是一个绘制3D极坐标图的示例:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建数据
theta = np.linspace(0, 2*np.pi, 100)
r = np.linspace(0, 1, 100)
Theta, R = np.meshgrid(theta, r)
X = R * np.cos(Theta)
Y = R * np.sin(Theta)
Z = np.exp(-R**2)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制3D极坐标图
ax.plot_surface(X, Y, Z, cmap='viridis')

# 设置坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show()

在这个示例中,我们使用 ​np.meshgrid​ 创建了极坐标的角度 theta 和半径 r,并计算了由 X、Y 和 Z 表示的数据点坐标。然后,我们使用 ​plot_surface​ 函数绘制了三维曲面。最后,我们设置了坐标轴标签并显示图形。

相关推荐
IVEN_1 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang2 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮2 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling3 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮6 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
曲幽6 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健21 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽1 天前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers