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

如何让循环中两组绘图线条共用颜色与图例标签

Matplotlib同组线条同色+图例不重复的实现方法

问题场景

需要绘制两组时间序列数据:x1与y1、x2与y2。其中x是时间向量,y1、y2均为行数与x匹配、包含5列的矩阵,每列对应一条独立线条。

原代码如下:

for i in range(5):
    plt.plot(x1,y1[:,i],x2,y2[:,i],label=labels[i])
plt.legend()

当前问题:每次循环里的两组线条颜色不同,且图例中每个标签重复显示两次。

解决方法

核心思路:让同一次循环中的两条线条共享同一颜色,且仅为其中一条添加图例标签。

修改后的代码:

import matplotlib.pyplot as plt

# 假设x1、x2、y1、y2、labels已提前定义
for i in range(5):
    # 绘制第一组数据,获取线条对象并设置图例标签
    line, = plt.plot(x1, y1[:, i], label=labels[i])
    # 复用第一条线的颜色绘制第二组数据,不设置标签
    plt.plot(x2, y2[:, i], color=line.get_color())

plt.legend()
plt.show()

原理说明

  • 调用plt.plot()绘制单条线时,会返回包含线条对象的元组,用line,解包出单个线条对象
  • 通过line.get_color()获取该线条的颜色,将其传给第二组数据的color参数,实现同组线条颜色一致
  • 仅为第一组线条设置label,第二组不设置,避免图例重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:31:06