Sympy绘图X轴位置异常如何解决?
解决spb绘图X轴偏移问题
问题原因
你设置了aspect="equal"参数,它会强制X、Y轴的单位像素长度完全相等。但你的Y轴取值范围仅为26.75-31(跨度4.25),X轴范围是-2.0-2.3(跨度4.3),由于Y轴整体数值远高于X轴,为维持等比例,绘图引擎自动调整了坐标轴位置,导致X轴零点视觉上偏离预期。
修复方案
方案1:移除等比例约束(推荐)
删除aspect="equal"参数,绘图引擎会根据数据范围自动适配坐标轴比例,X轴零点将回到正常位置:
from sympy import * import spb question = "100*(x)**2-30*x+30" x,y = symbols("x y") plot = spb.plot( eval(question), (x, -2.0, 2.3), {"color": "blue", "markersize": 1}, legend=False, ylim=(26.75, 31), xlim=(-2.0, 2.3), show=True, adaptive=False, n=70000, is_point=True, axis_center="auto" )
方案2:手动指定坐标轴中心
如果必须保留aspect="equal",可以手动设置axis_center为期望的坐标,让X轴零点对应你需要的Y轴位置:
plot = spb.plot( eval(question), (x, -2.0, 2.3), {"color": "blue", "markersize": 1}, legend=False, aspect="equal", ylim=(26.75, 31), xlim=(-2.0, 2.3), show=True, adaptive=False, n=70000, is_point=True, axis_center=(0, 28.75) # 手动指定X=0、Y=28.75为坐标轴中心 )
额外优化建议
- 避免用
eval()解析表达式,推荐更安全的sympify():expr = sympify(question),绘图时传入expr即可。 n=70000会生成大量点,可能导致绘图卡顿,可根据需求降低该数值。
内容的提问来源于stack exchange,提问作者Joshua Guevara
相关产品推荐
相关产品推荐

