You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ChartJs折线图项目图例不显示问题咨询

图例未显示问题原因及修复方案

常见原因

  • 调用绘图函数(如plt.plot()、plt.bar()等)时未传入label参数,plt.legend()无法匹配到需要展示的图例项
  • 图例被放置在画布可视区域外:设置bbox_to_anchor等参数调整图例位置后,未调整画布边距导致图例被裁切
  • 多子图绘图场景下,plt.legend()调用位置错误,未绑定到对应子图的绘图对象
  • 手动给plt.legend()传入handles参数时,传入的绘图对象列表为空或者和labels不匹配
  • 调用plt.legend()后执行了清除图例的相关操作

修复方案

  • 给每个需要在图例中展示的绘图语句增加label参数:
# 错误写法
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend()

# 正确写法
plt.plot(x, y1, label='曲线1')
plt.plot(x, y2, label='曲线2')
plt.legend()
  • 如果是图例超出可视区域,可调用plt.tight_layout()自动调整画布边距,或者调整图例位置到画布内部:
plt.legend(bbox_to_anchor=(1.05, 1))
plt.tight_layout() # 自动调整画布边距,避免图例被裁切
  • 多子图场景下,在每个子图的绘图代码后调用对应子图对象的legend()方法:
ax1.plot(x, y1, label='曲线1')
ax1.legend()
ax2.plot(x, y2, label='曲线2')
ax2.legend()
  • 手动指定handles时,确保传入的绘图对象和标签一一对应:
line1, = plt.plot(x, y1)
line2, = plt.plot(x, y2)
plt.legend(handles=[line1, line2], labels=['曲线1', '曲线2'])

内容的提问来源于stack exchange,提问作者ionescho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:27:01