如何用SymPy在单变量线性方程的数轴图上绘制整数点
用SymPy结合Matplotlib绘制单变量方程的数轴解图
SymPy自带的plot函数更适合绘制函数曲线,要实现你需要的数轴标记样式,建议结合Matplotlib来自定义绘图,以下是完整实现代码:
from sympy import symbols, Eq, solve, init_printing import matplotlib.pyplot as plt # 初始化SymPy,打印美观的公式 init_printing(use_unicode=True) # 定义变量和方程 x = symbols("x") ekpr = Eq(4*(2*x + 3), 10*x + 8) print("方程:") display(ekpr) # 求解方程 sol = solve(ekpr, x)[0] print(f"\n方程的解:x = {sol}") # ---------------------- 绘制数轴图 ---------------------- fig, ax = plt.subplots(figsize=(10, 2)) # 绘制x轴(带箭头) ax.plot([-5, 7], [0, 0], color='black', linewidth=2, marker='>', markersize=8, markeredgecolor='black', markerfacecolor='black') ax.plot([-5, 7], [0, 0], color='black', linewidth=2, marker='<', markersize=8, markeredgecolor='black', markerfacecolor='black') # 标记x轴上的整数刻度 for num in range(-5, 8): ax.plot(num, 0, marker='|', color='black', markersize=10) ax.text(num, -0.1, str(num), ha='center', fontsize=10) # 在解的位置绘制实心点和标注箭头 ax.plot(sol, 0, marker='o', color='red', markersize=12, zorder=5) ax.annotate(f'x = {sol}', xy=(sol, 0), xytext=(sol, 0.3), arrowprops=dict(facecolor='red', shrink=0.05), ha='center', fontsize=12, color='red') # 隐藏y轴和多余边框 ax.spines[['top', 'right', 'left']].set_visible(False) ax.set_yticks([]) ax.set_ylim(-0.5, 0.8) plt.tight_layout() plt.show()
代码说明:
- 先用SymPy完成方程的定义与求解,得到解
x=2 - 用Matplotlib创建画布,绘制带箭头的x轴作为数轴
- 标记出指定范围(-5到7)内的所有整数刻度
- 在解的位置绘制红色实心点,并添加带箭头的标注
- 隐藏不必要的y轴和边框,只保留数轴样式
运行后就能得到类似你需要的数轴图,清晰标记出方程的解位置。
内容的提问来源于stack exchange,提问作者Fahrizal
相关产品推荐
相关产品推荐

