SymPy 将 sympy 和 matplotlib 图形合并到一张图中
在本文中,我们将介绍如何使用 SymPy 将 sympy 和 matplotlib 的图形合并到一张图中。SymPy 是一个用于符号计算的 Python 库,而 matplotlib 是一个用于绘制图形的 Python 库。通过将这两个库结合起来使用,我们可以创建具有符号计算能力的图形。
阅读更多:SymPy 教程
1. 引入必要的库
首先,我们需要引入以下库:
– sympy
– matplotlib.pyplot
– numpy
import sympy as sp
import matplotlib.pyplot as plt
import numpy as np
2. 创建 SymPy 表达式
我们可以使用 SymPy 创建一个数学表达式,例如一个简单的线性函数:
x = sp.symbols('x')
expr = 2*x + 3
3. 创建 matplotlib 图形
接下来,我们可以使用 matplotlib 创建一个图形,例如绘制上一步创建的线性函数:
x_vals = np.linspace(-10, 10, 100)
y_vals = [sp.N(expr.subs(x, val)) for val in x_vals]
plt.plot(x_vals, y_vals)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Graph of 2*x + 3')
plt.grid(True)
plt.show()
4. 合并 SymPy 和 matplotlib 图形
为了将 SymPy 的表达式和 matplotlib 的图形合并到一张图中,我们可以使用 SymPy 的 lambdify
函数将 SymPy 表达式转换为可以计算数值结果的函数,并在 matplotlib 图形中使用这个函数绘制曲线。
x = np.linspace(-10, 10, 100)
f = sp.lambdify(x, expr, modules=['numpy'])
y = f(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Graph of 2*x + 3')
plt.grid(True)
plt.show()
5. 添加更多 SymPy 表达式和 matplotlib 图形
除了一个 SymPy 表达式和一个 matplotlib 图形之外,我们还可以添加更多表达式和图形。
x = sp.symbols('x')
expr1 = x**2
expr2 = sp.sin(x)
x_vals = np.linspace(-10, 10, 100)
y_vals1 = [sp.N(expr1.subs(x, val)) for val in x_vals]
y_vals2 = [sp.N(expr2.subs(x, val)) for val in x_vals]
fig, ax1 = plt.subplots()
ax1.plot(x_vals, y_vals1, 'r', label='x^2')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.legend(loc='upper left')
ax2 = ax1.twinx()
ax2.plot(x_vals, y_vals2, 'g', label='sin(x)')
ax2.set_ylabel('y')
ax2.legend(loc='upper right')
plt.title('Graphs of x^2 and sin(x)')
plt.grid(True)
plt.show()
在上面的例子中,我们创建了两个 SymPy 表达式 x**2
和 sin(x)
,并将它们与 matplotlib 的图形结合在一起。其中,ax1
和 ax2
是两个子图,分别绘制了 x^2
和 sin(x)
的曲线。
总结
在本文中,我们学习了如何使用 SymPy 将 sympy 和 matplotlib 的图形合并到一张图中。通过将 SymPy 的表达式转换为可以计算数值结果的函数,并在 matplotlib 的图形中绘制这些函数的曲线,我们可以创建具有符号计算能力的图形。这种结合可以为符号计算和图形展示提供更多的可能性,使得数据分析和可视化更加灵活和强大。