Python数学可视化——环境搭建与基础绘图
Python数学可视化——环境搭建与基础绘图
数学函数可视化入门(一次函数/三角函数)
本节将建立Python科学计算环境,并创建基础函数绘图工具,可生成一次函数和三角函数的可视化图像,同时结合物理中的匀速直线运动案例。
一、环境配置与工具准备
# 安装必要库(在命令行中执行)
# pip install numpy matplotlib
二、核心代码实现
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocatordef plot_function(func_type, params, x_range=(-10, 10), output_path="function_plot.png"):"""绘制函数图像并保存为PNG参数:func_type: 函数类型 ('linear' 或 'trig')params: 函数参数 - 一次函数: [k, b] (y = kx + b)- 三角函数: [a, b, c] (y = a*sin(bx + c))x_range: x轴范围 (start, end)output_path: 输出文件路径"""plt.figure(figsize=(10, 6), dpi=100)ax = plt.gca()# 设置网格和样式ax.grid(True, linestyle='--', alpha=0.7)ax.set_axisbelow(True)ax.spines['left'].set_position('zero')ax.spines['bottom'].set_position('zero')ax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)# 生成x值x = np.linspace(x_range[0], x_range[1], 500)# 根据函数类型计算y值if func_type == 'linear':k, b = paramsy = k * x + btitle = f"一次函数: $y = {k}x + {b}$" if b >= 0 else f"一次函数: $y = {k}x {b}$"elif func_type == 'trig':a, b, c = paramsy = a * np.sin(b * x + c)title = f"三角函数: $y = {a}\\sin({b}x + {c})$"# 绘制函数曲线plt.plot(x, y, 'b-', linewidth=2.5, label=title.split(': ')[1])# 设置标题和标签plt.title(title, fontsize=14, pad=20)plt.xlabel('x', fontsize=12, labelpad=-10, x=1.02)plt.ylabel('y', fontsize=12, labelpad=-20, y=1.02, rotation=0)# 设置刻度ax.xaxis.set_major_locator(MultipleLocator(2))ax.yaxis.set_major_locator(MultipleLocator(2))# 添加图例plt.legend(loc='upper right', frameon=True, shadow=True)# 保存图像plt.savefig(output_path, bbox_inches='tight', pad_inches=0.3)plt.close()print(f"图像已保存至: {output_path}")# 物理案例:匀速直线运动 (位移-时间图)
def plot_uniform_motion(velocity, initial_position, time_range=(0, 10), output_path="motion_plot.png"):"""绘制匀速直线运动的位移-时间图参数:velocity: 速度 (m/s)initial_position: 初始位置 (m)time_range: 时间范围 (s)output_path: 输出文件路径"""plt.figure(figsize=(10, 6), dpi=100)ax = plt.gca()# 设置网格和样式ax.grid(True, linestyle='--', alpha=0.7)ax.set_axisbelow(True)# 生成时间值t = np.linspace(time_range[0], time_range[1], 500)# 计算位移 (s = v*t + s0)s = velocity * t + initial_position# 绘制位移-时间曲线plt.plot(t, s, 'r-', linewidth=2.5, label=f"$s = {velocity}t + {initial_position}$")# 设置标题和标签plt.title(f"匀速直线运动: 速度={velocity}m/s, 初位置={initial_position}m", fontsize=14, pad=20)plt.xlabel('时间 (s)', fontsize=12)plt.ylabel('位移 (m)', fontsize=12)# 添加图例plt.legend(loc='upper left', frameon=True, shadow=True)# 保存图像plt.savefig(output_path, bbox_inches='tight', pad_inches=0.3)plt.close()print(f"物理运动图像已保存至: {output_path}")
三、使用示例
if __name__ == "__main__":# 示例1:绘制一次函数 y = 2x - 3plot_function('linear', [2, -3], x_range=(-5, 5), output_path="linear_function.png")# 示例2:绘制三角函数 y = 3*sin(2x + π/2)plot_function('trig', [3, 2, np.pi/2], x_range=(-2*np.pi, 2*np.pi), output_path="trig_function.png")# 物理案例:初位置5m,以2m/s速度匀速运动plot_uniform_motion(velocity=2, initial_position=5, time_range=(0, 10), output_path="uniform_motion.png")
四、生成图像说明
-
一次函数图像 (
linear_function.png
):- 清晰显示直线斜率和截距
- 坐标轴经过零点,网格辅助观察
- 函数公式显示在标题中
-
三角函数图像 (
trig_function.png
):- 展示正弦函数的周期性
- 显示振幅、频率和相位变化
- x轴以π为单位显示关键点
-
物理运动图像 (
uniform_motion.png
):- 展示匀速直线运动的位移-时间关系
- 斜率表示速度,截距表示初位置
- 包含物理量单位和实际意义
五、教学要点
-
数学概念:
- 一次函数的斜率与截距意义
- 三角函数振幅、周期和相位的几何表示
- 函数图像与解析式的关系
-
物理联系:
- 位移-时间图的物理意义
- 斜率表示速度,截距表示初位置
- 匀速运动的特点:直线图像
-
编程技巧:
- NumPy数组操作与函数计算
- Matplotlib绘图配置与样式定制
- 函数封装与参数化设计
本节代码已完整实现基础函数可视化工具,可直接运行生成教学图像。生成的PNG图像适合插入课件、讲义或实验报告。