如何在Matplotlib图例中使用Sympy方程作为标签?
如何在Matplotlib图例中使用SymPy方程作为标签
核心思路
SymPy表达式可转换为LaTeX格式,而Matplotlib支持渲染LaTeX数学公式,因此只需将SymPy方程转为LaTeX字符串,再作为图例标签传入即可。
具体实现步骤及代码示例
1. 导入所需库
import sympy as sp import matplotlib.pyplot as plt import numpy as np
2. 创建SymPy方程
定义符号与目标方程:
x = sp.symbols('x') # 示例方程:sin(x) = cos(x) eq = sp.Eq(sp.sin(x), sp.cos(x))
3. 将SymPy方程转为LaTeX字符串
使用SymPy内置的latex()函数完成格式转换:
eq_latex = sp.latex(eq)
4. 绘图并设置图例标签
将LaTeX字符串用$包裹后作为图例标签,Matplotlib会自动渲染为标准数学公式:
# 生成绘图数据 x_vals = np.linspace(-np.pi, np.pi, 100) y_sin = np.sin(x_vals) y_cos = np.cos(x_vals) # 绘制曲线并指定图例标签 plt.plot(x_vals, y_sin, label=f'${eq_latex}$') plt.plot(x_vals, y_cos, label=r'$\cos(x)$') # 显示图例与图表 plt.legend() plt.show()
关键注意事项
- 必须用
$包裹LaTeX字符串,Matplotlib才会识别为数学公式进行渲染。 - 若需要更专业的LaTeX渲染效果,可开启Matplotlib的外部LaTeX支持(需环境已安装LaTeX工具链):
plt.rcParams['text.usetex'] = True plt.rcParams['font.family'] = 'serif' - 可直接在
label参数中内嵌sp.latex()调用,简化代码:plt.plot(x_vals, y_sin, label=f'${sp.latex(eq)}$')
内容的提问来源于stack exchange,提问作者Stephen Anyanwu
相关产品推荐
相关产品推荐

