如何在sympy.plotting.plot中手动指定图例文本?
解决SymPy绘图时手动设置多函数图例标签的问题
你当前的代码里,SymPy的plot()函数并不支持直接通过label=['Foo1','Foo2']这种列表形式给多个函数分别设置图例标签,这会导致所有曲线共用同一个标签(也就是整个列表),所以达不到预期效果。下面提供两种可行的解决方法:
方法一:通过SymPy Plot对象逐个设置标签
直接获取绘制后的Plot对象,给每个子图(对应每个函数)单独设置label属性,再更新图例:
import sympy as sym x = sym.symbols('x') # 先绘制但不显示图像 p = sym.plotting.plot(x ** 2, 2 * x ** 2, legend=True, show=False) # 给第一个曲线设置标签 p[0].label = 'Foo1' # 给第二个曲线设置标签 p[1].label = 'Foo2' # 确保图例启用后显示图像 p.legend = True p.show()
方法二:借助Matplotlib轴对象修改图例
SymPy的绘图后端基于Matplotlib,所以可以直接获取对应的轴对象,手动修改图例标签:
import sympy as sym x = sym.symbols('x') # 绘制并获取Plot对象(不立即显示) p = sym.plotting.plot(x ** 2, 2 * x ** 2, legend=True, show=False) # 获取Matplotlib的轴对象 ax = p._backend.ax # 直接设置图例的标签列表 ax.legend(['Foo1', 'Foo2']) # 显示图像 p.show()
内容的提问来源于stack exchange,提问作者Sebastian Gerdes
相关产品推荐
相关产品推荐

