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

相关推荐
百度搜知知学社3 分钟前
ScreenCraft壁纸进阶玩法:4K超清与3D视差动态效果全解析
3d·动态效果·壁纸·4k超清·3d视差·screencraft
插件开发5 分钟前
矢量路径运算如何选GPU技术?——适用算法对比及OpenGL/Direct3D/CUDA选型指南
算法·3d
CG_MAGIC8 分钟前
3ds Max粒子系统:雪与雨特效制作
3d·blender·材质·效果图·渲云渲染
Cloud_Shy61816 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 27 - 29)
开发语言·人工智能·经验分享·python·学习方法
机汇五金_22 分钟前
交换机箱体材质如何选择?铝合金与钢板有什么区别?
python·材质
asdzx6722 分钟前
使用 Python 精准提取 Word 文档中的文本与表格
python·word
某林21224 分钟前
ROS 2 与大模型融合实战:从进程连环崩溃到类型安全防御的深度排障复盘
c++·python·安全·机器人·人机交互·ros2
勇往直前plus36 分钟前
Redis&Python 梳理
数据库·redis·python
开源量化GO36 分钟前
多品种组合单品种剧烈波动:组合风控先平谁
python
战族狼魂1 小时前
AI 全栈开发实战训练路线(企业级)
人工智能·python·chatgpt·大模型