【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​ 函数绘制了三维曲面。最后,我们设置了坐标轴标签并显示图形。

相关推荐
ikun_文13 分钟前
Django框架路由Router的使用
python·pycharm·django
IvanCodes16 分钟前
Python 基础语法(二):字符串与常用操作
python
昭昭日月明22 分钟前
LangChain 生态:从链到代理,开发者需要掌握的三大核心
python·langchain·agent
Csvn29 分钟前
🐍 Day 8:面向对象编程
后端·python
程序员天天困31 分钟前
向量检索不准怎么办:混合检索与 Rerank 重排序召回优化实战
后端·python·ai编程
做cv的小昊2 小时前
结合代码读3DGS&世界模型论文(3)——3DGS & 世界模型新工作GaussianDream论文及代码解读
3d
alphaTao2 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼2 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君2 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
lupai13 小时前
手机在网状态接口实测效果与质量评估
大数据·python·智能手机·api接口