使用sympy的plot_implicit绘图时设置图例出现报错的问题咨询
Sympy plot_implicit 图例报错解决方案
报错根因
你遇到的No handles with labels found to put in legend报错,是因为sympy的plot_implicit接口不会自动将传入的label参数绑定到内部生成的绘图句柄上,matplotlib渲染图例时找不到带标签的有效元素,就会抛出该错误。
修复方案
你需要先关闭自动渲染,拿到绘图对象后手动给内部绘图序列设置标签,再触发渲染即可,修改后的可运行代码如下:
import sympy as sp from sympy.abc import x,y # 修复原代码的命名冲突:自定义函数不要和导入的符号z重名 def z_func(x, y): return x - y # 先将show参数设为False,获取plot对象 p = sp.plot_implicit(z_func(x, y), (x, 0, 3), (y, 0, 3), show=False, legend=True) # 手动给绘图序列设置标签 p[0].label = "Test" # 渲染显示图像 p.show()
补充说明
- 如果你需要同时绘制多个隐函数图像,依次给
p[0]、p[1]等不同索引的绘图序列设置对应label即可正常生成多元素图例。 - 原代码中导入了符号
z又自定义了同名函数,属于命名冲突,后续如果用到符号z会出现不可预期的问题,建议提前调整命名规避。
内容的提问来源于stack exchange,提问作者Benny Rodríguez
相关产品推荐
相关产品推荐

