利用Python NumPy与Matplotlib绘制数学函数图像

季宁
季宁
发布时间:2026-10-12 | 3人浏览过
原创

介绍如何使用Python的NumPy与Matplotlib库生成标准数学函数图像。涵盖环境配置、一维数组构建方法,并提供一元一次、二次、指数、三角函数及高级坐标轴定制的具体代码与参数说明,快速掌握科学计算可视化的核心操作。

核心工具与基础准备

使用Python进行数学函数绘图主要依赖两个核心库:numpy负责高效的数值运算与数组处理,matplotlib则提供丰富的二维图表绘制能力。两者结合可以替代传统手工绘图,快速生成高精度、标准化的函数图像。

第1步:配置依赖与中文字体显示

执行绘图前需确保库已安装,并在脚本开头导入模块。由于Matplotlib默认不支持中文字符,需额外配置字体以正常显示标签与标题。

import numpy as np
from matplotlib import pyplot as plt

# 配置中文字体与负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

常用绘图函数与操作顺序

第2步:选择合适的一维数组生成方法

绘制连续函数需要将自变量范围离散化。NumPy提供两种常用方式,可根据精度需求选择:

  • np.arange(start, stop, step):按固定步长生成数组。适用于明确指定间隔的场景。
  • np.linspace(start, stop, num, endpoint=True):按样本数量生成等差数列。更适合需要精确控制采样点总数的场景。

第3步:编写并执行基础函数绘制代码

以下示例展示如何根据上一步生成的数组计算因变量,并使用plt.plot()完成绘制。每类函数均包含独立的X轴、Y轴标签与标题设置。

一元一次与一元二次函数

# 一元一次函数 y = 2x
x1 = np.arange(-10, 10, 0.1)
y1 = 2 * x1
plt.figure()
plt.plot(x1, y1, label='y=2x')
plt.xlabel('x'); plt.ylabel('y')
plt.title("一元一次函数"); plt.legend(); plt.show()
一元一次函数y=2x的直线图像
设置xlabel、ylabel与title后可清晰标注坐标含义
# 一元二次函数 y = x^2
x2 = np.arange(-10, 10, 0.1)
y2 = x2 * x2
plt.figure()
plt.plot(x2, y2, label='y=x²')
plt.xlabel('x'); plt.ylabel('y')
plt.title("一元二次函数"); plt.legend(); plt.show()
一元二次函数y=x²的抛物线图像
二次函数呈现开口向上的标准抛物线形态

指数函数与三角函数

# 指数函数 y = 2^x
x3 = np.arange(-10, 10, 0.1)
y3 = np.power(2, x3)
plt.figure()
plt.plot(x3, y3, label='y=2^x')
plt.xlabel('x'); plt.ylabel('y'); plt.title("指数函数"); plt.legend(); plt.show()
指数函数y=2^x的递增曲线图像
底数大于1时,曲线随x增大呈快速上升趋势
# 正弦函数 y = sin(x)
x_sin = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y_sin = np.sin(x_sin)
plt.figure()
plt.plot(x_sin, y_sin, label='sin(x)')
plt.xlabel('x'); plt.ylabel('y'); plt.title("正弦函数"); plt.legend(); plt.show()
正弦函数在负到正3pi区间的波动图像
周期函数图像呈现规律的上下波动特征
# 余弦函数 y = cos(x)
x_cos = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y_cos = np.cos(x_cos)
plt.figure()
plt.plot(x_cos, y_cos, label='cos(x)')
plt.xlabel('x'); plt.ylabel('y'); plt.title("余弦函数"); plt.legend(); plt.show()
余弦函数在负到正3pi区间的波动图像
与正弦函数相位相差90度,峰值位于原点附近

高级图表定制操作

第4步:多函数同屏绘制与坐标轴精简美化

在实际分析中,常需在同一画布对比多个函数。通过调整figure尺寸、隐藏顶部/右侧边框、自定义刻度位置,可获得更专业的学术级图表。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 8), dpi=72)
X = np.linspace(-2*np.pi, 2*np.pi, 2048, endpoint=True)
C, S = np.cos(X), np.sin(X)

ax.plot(X, C, linewidth=1.5, linestyle="-", label="Cosine")
ax.plot(X, S, linewidth=1.5, linestyle="-", label="Sine")
ax.legend(loc='upper left')
ax.set_xlim(-4.5, 4.5)
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
              [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ax.set_yticks([-1, 0, 1], [r'$-1$', r'$0$', r'$+1$'])
ax.set_ylim(-1.5, 1.5)

# 移除上边框和右边框,使坐标轴交叉于原点
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))

plt.show()
正弦与余弦函数对比绘制及坐标轴美化后的结果
关闭多余边框并自定义LaTeX格式刻度后图表更显简洁规范

双曲函数绘制示例

x = np.arange(-10, 10, 0.01)
sinh = 0.5 * (np.exp(x) - np.exp(-x))
cosh = 0.5 * (np.exp(x) + np.exp(-x))
arsinh = np.log(x + np.sqrt(x**2 + 1))

fig2, ax2 = plt.subplots(figsize=(12, 8))
ax2.plot(x, sinh, label="Sinh")
ax2.plot(x, cosh, label="Cosh")
ax2.plot(x, arsinh, label="Arcsinh")
ax2.legend(loc='upper left')
ax2.set_ylim(-10, 10)

ax2.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['left'].set_position(('data', 0))
ax2.spines['bottom'].set_position(('data', 0))
plt.show()
双曲正弦、余弦与反双曲正弦函数对比图像
正确引入numpy.exp可稳定输出非对称增长曲线

总结

通过合理搭配numpy的数值生成能力与matplotlib的绘图接口,即可高效完成从基础代数函数到复杂三角、双曲函数的可视化转换。掌握坐标轴定位、刻度格式化与多曲线叠加逻辑后,能够直接产出符合出版要求的数据图形。以上就是利用Python NumPy与Matplotlib绘制数学函数图像的详细内容,更多关于Python数据可视化与科学计算的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表