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

Matplotlib绘图:无需显式迭代为数组列指定自定义颜色

在Matplotlib中无需迭代实现2D数组多列自定义颜色绘图

当y为2D数组时,确实可以不用手动循环,直接通过指定颜色列表为每一列的线条自定义颜色,同时让每组散点和对应拟合线使用同色,以下是两种实用方法:

方法1:自定义颜色循环(更灵活)

通过设置当前子图的颜色循环规则,让plt.plot自动按你指定的颜色依次绘制所有线条,散点和拟合线会自动匹配对应颜色:

import numpy as np
import matplotlib.pyplot as plt
from cycler import cycler

np.random.seed(0)

# 生成示例数据
slope = [1, 2, 3]
X = np.arange(10) 
Y = slope * X[:,None] + np.random.randn(10,3)

# 计算拟合曲线
params = np.polyfit(X, Y, deg=1)
x = np.linspace(0, 10, 50)
y = np.polyval(params, x[:,None])

# 设置自定义颜色循环
colors = ['b', 'r', 'g']
plt.gca().set_prop_cycle(cycler('color', colors))

# 直接绘制所有散点和拟合线,自动应用循环颜色
plt.plot(X, Y, '.')
plt.plot(x, y)

plt.show()

方法2:直接传递颜色列表给plot函数

Matplotlib支持直接给plot的color参数传入长度与y列数一致的颜色列表,每列线条会对应列表中的颜色:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

# 生成示例数据和拟合曲线
slope = [1, 2, 3]
X = np.arange(10) 
Y = slope * X[:,None] + np.random.randn(10,3)
params = np.polyfit(X, Y, deg=1)
x = np.linspace(0, 10, 50)
y = np.polyval(params, x[:,None])

colors = ['b', 'r', 'g']

# 绘制散点,指定每列对应颜色
plt.plot(X, Y, '.', color=colors)
# 绘制拟合线,对应相同颜色
plt.plot(x, y, color=colors)

plt.show()

两种方法都能实现你想要的效果,完全替代手动循环的写法。需要注意的是,Matplotlib 3.0及以上版本对color参数接受可迭代对象的支持更完善,若使用旧版本建议优先选择方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57