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

如何无需循环为Matplotlib多折线设置分组颜色?

问题解决:Matplotlib批量为多条折线设置不同颜色

错误原因

plt.plot()的color参数仅支持单个颜色值(让所有折线使用同一种颜色),无法直接传入颜色列表为每条折线单独指定颜色,因此传入列表会触发ValueError。

解决方案

方案1:利用轴对象的颜色循环(单次plot)

通过set_prop_cycle()设置轴的颜色循环规则,让plot时按列表顺序为每条折线分配颜色:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 180) 
y = np.random.rand(36, 180) 

# 定义颜色序列并设置轴的颜色循环
colors = ['blue'] * 30 + ['red'] * 6
plt.gca().set_prop_cycle(color=colors)

# 一次绘制所有折线,自动按颜色循环上色
plt.plot(x, y.T)
plt.show()

方案2:分两次plot绘制(直观易懂)

直接拆分数据,分别绘制前30条和后6条折线,各自指定颜色:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 180) 
y = np.random.rand(36, 180) 

# 绘制前30条蓝色折线
plt.plot(x, y[:30].T, color='blue')
# 绘制后6条红色折线
plt.plot(x, y[30:].T, color='red')

plt.show()

两种方案对比

  • 方案1适合需要按自定义顺序批量设置颜色的场景,仅需一次plot调用;
  • 方案2代码逻辑更直观,可读性强,无需理解颜色循环机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:34:55