第二十章:Python-Matplotlib库实现函数可视化

本文将介绍如何使用Python的这些库来实现函数的二维和三维可视化,并提供一些优美的三维函数示例。资源绑定附上完整资源供读者参考学习!

一、库的介绍

  • Matplotlib:经典的二维和三维可视化库,支持多种图表类型。

  • Plotly :交互式可视化库,支持动态三维图形。

二、常见函数示例

1. 二维函数示例

示例1:正弦函数
Python示例代码:
python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

# 定义函数
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

# 绘制图像
plt.plot(x, y,color='r')
plt.title("正弦函数")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()
效果展示:
示例2:抛物线函数
Python示例代码:
python 复制代码
import math
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

# 指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

# 生成y值的范围,包括负数
y = np.linspace(-10, 10, 100)
x = y**2  # 定义x为y的平方

# 绘制开口向右的抛物线
plt.plot(x, y, color='r')
plt.title("开口向右的抛物线", color='black')
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()
效果展示:

2. 三维函数示例

示例1:三维曲面
Python示例代码
python 复制代码
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 定义函数
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z=x**2+2*y**2+4

# 绘制图像
ax.plot_surface(x, y, z, cmap='viridis')
ax.set_title("三维曲面")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
效果展示
示例2:三维曲线
Python示例代码
python 复制代码
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

t = np.linspace(0, 2 * np.pi, 100)
x = np.sin(t)
y = np.cos(t)
z = t

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z,color='b')
ax.set_title("三维曲线")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
效果展示

三、优美的三维函数示例

示例1:球面函数

Python示例代码
python 复制代码
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='Oranges')
ax.set_title("球面函数")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
效果展示

示例2:莫比乌斯带

Python示例代码
python 复制代码
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#解决负数坐标显示问题
plt.rcParams['axes.unicode_minus'] = False

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(-0.5, 0.5, 100)
u, v = np.meshgrid(u, v)
x = (1 + v * np.cos(u / 2)) * np.cos(u)
y = (1 + v * np.cos(u / 2)) * np.sin(u)
z = v * np.sin(u / 2)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='gist_rainbow_r')
ax.set_title("莫比乌斯带")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
效果展示

四、函数参数用法总结

以下是Matplotlib中常用函数的参数用法总结:

函数 参数 描述
plot x, y 绘制二维曲线
plot_surface x, y, z 绘制三维曲面
plot_wireframe x, y, z 绘制三维线框图
contour x, y, z 绘制等高线图
scatter x, y 绘制二维散点图
scatter3D x, y, z 绘制三维散点图

通过这些函数,我们可以轻松实现各种数学函数的可视化,为数学建模和数据分析提供直观的工具。希望本文能帮助你快速上手Python的函数可视化!资源绑定附上完整资源供读者参考学习!

相关推荐
2603_965148111 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
程序猿追2 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓2 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播2 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
CCblandy3 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全3 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠3 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y4 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究4 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
Smoothcloud润云4 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu