如何为pandas绘制的折线图按列分组配色并保留全部图例项
Pandas分组设置折线颜色实现方案
核心逻辑是利用DataFrame.plot()的color参数,按列顺序逐列指定线条颜色,同组列传入相同色值即可,全程不需要修改图例配置,会自动保留全部列的图例条目。
完整实现代码
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 构造测试数据集 x = pd.DataFrame( np.random.randn(5, 5), columns=['0', '1.1', '1.2', '2.1', '2.2'] ) # 按列顺序匹配颜色: # 索引0对应列'0':单独使用蓝色 # 索引1、2对应列'1.1'/'1.2':统一使用橙色 # 索引3、4对应列'2.1'/'2.2':统一使用绿色 ax = x.plot( color=['#1f77b4', '#ff7f0e', '#ff7f0e', '#2ca02c', '#2ca02c'] ) plt.show()
注意事项
color传入的列表长度必须和DataFrame列数完全相等,顺序严格和df.columns的返回顺序一一对应,否则会出现颜色错位- 颜色值支持matplotlib所有合法颜色格式:十六进制色值、内置命名颜色(比如
'red'/'blue')、0-1区间的RGB元组都可以使用 - 该写法完全兼容pandas默认绘图的所有其他配置,比如线宽、线型、图例位置都可以正常传参调整,不会额外破坏原有绘图逻辑
- 如果后续调整了DataFrame的列顺序,需要同步调整
color列表的元素顺序,保证分组颜色匹配正确
默认绘图效果参考:
内容的提问来源于stack exchange,提问作者DHJ
相关产品推荐
相关产品推荐

