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

如何为Pandas .plot传递颜色列表绘制多列折线图?

动态绘制DataFrame多列折线图(同轴+统一配色)

完全明白你的需求——要根据DataFrame的列数动态生成折线,用subplots预留同轴添加其他图表的空间,还得保持配色统一对吧?直接给你完整的实现方案:

首先,我们把代码写全,包含动态配色、折线绘制,还有后续添加同色系图表的示例:

import pandas as pd
import matplotlib.pyplot as plt

# 示例DataFrame(这里模拟3列的情况,验证动态适配)
df = pd.DataFrame(index=range(1,6), columns=['a','b','c'])
df['a'] = [1,1,1,1,1]
df['b'] = [5,5,5,5,5]
df['c'] = [3,3,3,3,3]

# 创建画布和轴(用subplots方便后续添加其他图表)
fig, ax = plt.subplots(figsize=(8,5))

# 动态生成颜色列表:根据列数截取预设颜色,避免越界
colour_list = ['r', 'b','g','y','m','c'][:len(df.columns)]

# 绘制所有列的折线图,指定轴和颜色
df.plot(ax=ax, color=colour_list, linewidth=2)

# 示例:在同轴上添加同色系的散点图(验证颜色一致性)
for idx, col in enumerate(df.columns):
    ax.scatter(df.index, df[col]+0.2, color=colour_list[idx], s=50, label=f'{col} scatter')

# 调整图表样式
ax.set_title('Dynamic Multi-column Line Chart with Consistent Colors')
ax.legend()
plt.tight_layout()
plt.show()

关键细节说明:

  • 动态配色:colour_list[:len(df.columns)] 会自动根据DataFrame的列数截取对应数量的颜色,不管你是2列、3列还是更多,都不会出现颜色不够的问题(如果列数超过预设的6种颜色,你可以扩展colour_list里的颜色值,比如加入'k'(黑色)、'orange'等)。
  • 同轴绘制:通过df.plot(ax=ax)把所有折线绑定到同一个轴上,这也是你用subplots的核心目的——方便后续在同一个轴上叠加其他图表(比如上面示例里的散点图)。
  • 颜色一致性:后续添加其他图表时,只需要循环colour_list里的颜色,就能和折线图的颜色一一对应,保持视觉统一。

如果你的DataFrame列数会超过预设的6种颜色,推荐使用matplotlib的内置调色板,生成更多区分度高的颜色:

# 用内置调色板生成动态颜色
colour_list = plt.cm.tab10.colors[:len(df.columns)]

这样不管列数怎么变,都能完美适配啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:52:39