如何按Pandas DataFrame的Type列配色绘制每行折线图
按Type列统一配色绘制多折线图
解决思路
放弃直接转置索引绘图的方式,改为按Type分组后为每个类型分配固定颜色,批量绘制组内所有折线:
- 定义三种类型对应的颜色映射(可自定义)
- 按
Type列拆分数据 - 遍历每个分组,用指定颜色绘制组内所有行的折线
- 统一设置坐标轴标签与精简图例
修改后的代码
import pandas as pd import matplotlib.pyplot as plt # 读取数据 df = pd.read_csv('data.csv', sep=',') # 自定义Type与颜色的映射关系,可按需调整颜色值 color_map = {'Type1': '#1f77b4', 'Type2': '#ff7f0e', 'Type3': '#2ca02c'} # 创建绘图对象 fig, ax = plt.subplots(figsize=(7, 6)) # 按Type分组遍历,绘制同类型折线 for type_name, group in df.groupby('Type'): # 提取当前组的数值列(剔除Sample和Type列) group_data = group.drop(columns=['Sample', 'Type']) # 转置后绘制折线,指定当前Type对应的颜色 group_data.T.plot(ax=ax, color=color_map[type_name], label=type_name, legend=False) # 设置坐标轴标签 ax.set_ylabel('Absolute Power (log)', fontsize=12) ax.set_xlabel('Frequencies', fontsize=12) # 添加统一图例,每个Type仅显示一个条目 ax.legend(color_map.keys()) plt.show()
关键说明
- 利用
groupby('Type')拆分数据,确保同类型折线共用同一颜色 color_map支持十六进制色码、标准颜色名称等自定义配置- 关闭子图自动图例后统一添加,避免出现大量重复的图例条目
内容的提问来源于stack exchange,提问作者Gusi
相关产品推荐
相关产品推荐

