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

如何在Matplotlib中实现多曲线合并为单行的图例样式?

如何在Matplotlib中实现多行曲线合并为单行的图例?

当然可以!Matplotlib完全支持这种把多条曲线合并到单行图例的样式,核心思路就是自定义图例条目,把多个线条元素打包到同一个图例项里就行。

我给你写个完整的示例代码,一看就懂:

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

# 生成测试数据
x = range(1, 6)
y1 = [2*i for i in x]
y2 = [2*i-1 for i in x]
y3 = [2*i-2 for i in x]

# 绘制三条不同样式的曲线
plt.plot(x, y1, color='#1f77b4', linestyle='-', linewidth=2)
plt.plot(x, y2, color='#ff7f0e', linestyle='--', linewidth=2)
plt.plot(x, y3, color='#2ca02c', linestyle=':', linewidth=2)

# 手动创建三个线条样式的图例元素
line_elements = [
    Line2D([0], [0], color='#1f77b4', linestyle='-', linewidth=2),
    Line2D([0], [0], color='#ff7f0e', linestyle='--', linewidth=2),
    Line2D([0], [0], color='#2ca02c', linestyle=':', linewidth=2)
]

# 将多个线条元素合并为一个图例条目,对应单行描述
plt.legend(
    handles=[line_elements],
    labels=['三组实验数据'],
    handlelength=5,  # 调整图例中线条的长度,让样式更清晰
    fontsize=12
)

plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('合并多行曲线为单行图例示例')
plt.show()

关键思路解释:

  • 用matplotlib.lines.Line2D创建独立的线条样式元素,不用依赖绘图时的返回对象,灵活性更高
  • 把这些线条元素放到一个列表里,作为handles参数的一个元素传入plt.legend(),这样Matplotlib就会把它们渲染在同一行
  • 可以通过handlelength、fontsize等参数调整图例的显示效果,适配你的需求

如果你的曲线是带标记点的,也可以用同样的方法,给Line2D加上marker参数就行,比如marker='o'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:54:42