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

Matplotlib子图中轨迹自动颜色分配顺序咨询

Matplotlib自动分配轨迹颜色的顺序详解

嘿,这个问题我之前做批量可视化的时候也琢磨过,刚好能给你说清楚细节~

核心逻辑:Axes的独立颜色循环

Matplotlib给每条plot轨迹分配颜色,是基于当前子图(也就是你的axarr[0,0]这类Axes对象)的颜色循环器来的。这里有个关键细节:

  • 同一个子图里,每调用一次plot(),就会按循环顺序取下一个颜色
  • 不同子图的颜色循环是完全独立的,每个子图的第一条轨迹都会从循环的第一个颜色开始

默认颜色循环的具体顺序

默认情况下,Matplotlib 3.x+的颜色循环来自rcParams['axes.prop_cycle'],按顺序的10种基础颜色是:

  1. #1f77b4(深蓝色)
  2. #ff7f0e(橙色)
  3. #2ca02c(草绿色)
  4. #d62728(砖红色)
  5. #9467bd(紫灰色)
  6. #8c564b(棕褐色)
  7. #e377c2(浅粉色)
  8. #7f7f7f(中灰色)
  9. #bcbd22(黄绿色)
  10. #17becf(青蓝色)

如果子图里的轨迹超过10条,循环器会从头重复,第11条回到深蓝色,第12条再用橙色,以此类推。

对应你例子的颜色分配

就拿你说的4条轨迹的子图来说:

  • axarr[0, 0].plot(data for trace 1) → 分配第1个颜色:深蓝色#1f77b4
  • axarr[0, 0].plot(data for trace 2) → 分配第2个颜色:橙色#ff7f0e
  • axarr[0, 0].plot(data for trace 3) → 分配第3个颜色:草绿色#2ca02c
  • axarr[0, 0].plot(data for trace 4) → 分配第4个颜色:砖红色#d62728

如何查看/自定义颜色循环

如果你想确认当前的颜色顺序,或者自己定义循环规则,可以用这段代码:

import matplotlib.pyplot as plt

# 查看当前默认的颜色循环列表
default_colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
print("当前默认颜色顺序:", default_colors)

# 给单个子图设置自定义颜色循环
custom_color_cycle = plt.cycler(color=["#ff3333", "#33ff33", "#3333ff", "#ffff33"])
axarr[0,0].set_prop_cycle(custom_color_cycle)

小提醒

如果你用了seaborn这类第三方可视化样式,默认的颜色循环会被修改,这时需要查看对应样式的prop_cycle配置来确认颜色顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:09