使用SymPy的plot_implicit()时遇'Plot'对象无'_backend'属性错误
解决SymPy plot_implicit无法访问_backend属性的问题
问题原因
SymPy原生的Plot对象在设置show=False时,不会自动初始化后端(即_backend属性)——后端的创建逻辑默认是在show()方法执行时触发的。另外,你虽然安装了sympy_plot_backends,但如果仍调用SymPy原生的plot_implicit,并不会自动切换到spb的后端体系,所以问题依旧存在。
解决方案1:纯SymPy原生修复
手动初始化后端即可访问_backend属性:
import sympy # 替换成你自己的formattedQ表达式 x, y = sympy.symbols('x y') formattedQ = sympy.Eq(x**2 + y**2, 4) p = sympy.plot_implicit(formattedQ, show=False) # 手动创建后端实例 p._backend = p.backend(p) # 现在可以正常访问fig对象 fig = p._backend.fig fig.set_title("asdfj") # 最后显示图像 p.show()
解决方案2:使用sympy_plot_backends(更简洁)
直接使用spb提供的绘图函数,它会自动处理后端初始化,并且直接暴露fig和ax属性,无需操作_backend:
from spb import plot_implicit import sympy x, y = sympy.symbols('x y') formattedQ = sympy.Eq(x**2 + y**2, 4) p = plot_implicit(formattedQ, show=False) # 直接访问fig和坐标轴对象 fig = p.fig ax = p.ax fig.set_title("asdfj") ax.set_xlabel("X轴") ax.set_ylabel("Y轴") p.show()
内容的提问来源于stack exchange,提问作者Joshua Guevara
相关产品推荐
相关产品推荐

