如何在Matplotlib折线图中自定义各折线的固定颜色?
自定义Pandas折线图的固定颜色配置
要让不同图表中对应列的折线颜色保持一致,核心是给plot方法传入固定的颜色序列,替代默认的随机配色。以下是几种实用的实现方式:
方法1:直接指定与列顺序匹配的颜色列表
如果数据集的列顺序固定,直接定义一个颜色列表,和列的顺序一一对应即可:
import matplotlib.pyplot as plt # 自定义颜色列表,顺序与cum_return_pf的列顺序完全对应 # 支持十六进制码、RGB元组、官方颜色名称 custom_colors = ['#FF5733', '#33FF57', '#3357FF', '#F333FF', '#FF33A6', '#FFC300'] ax = cum_return_pf.plot(figsize=(10, 5), color=custom_colors) ax.set(xlabel="Year", ylabel="Return") plt.savefig('Comparison.jpg', dpi=300)
方法2:用字典绑定列名与颜色(更稳妥)
如果后续数据集的列顺序可能变化,用字典把列名和固定颜色绑定,确保颜色和列的对应关系不会混乱:
import matplotlib.pyplot as plt # 定义列名到颜色的映射字典,覆盖所有6个列 color_mapping = { '列名1': '#FF5733', '列名2': '#33FF57', '列名3': '#3357FF', '列名4': '#F333FF', '列名5': '#FF33A6', '列名6': '#FFC300' } # 按当前数据集的列顺序提取对应颜色 custom_colors = [color_mapping[col] for col in cum_return_pf.columns] ax = cum_return_pf.plot(figsize=(10, 5), color=custom_colors) ax.set(xlabel="Year", ylabel="Return") plt.savefig('Comparison.jpg', dpi=300)
方法3:自定义Colormap复用配色方案
如果需要在多个图表中复用同一套配色,可以创建自定义的Colormap:
import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap # 创建自定义配色的Colormap custom_cmap = ListedColormap(['#FF5733', '#33FF57', '#3357FF', '#F333FF', '#FF33A6', '#FFC300']) # 提取对应数量的颜色(匹配数据集列数) custom_colors = custom_cmap(range(len(cum_return_pf.columns))) ax = cum_return_pf.plot(figsize=(10, 5), color=custom_colors) ax.set(xlabel="Year", ylabel="Return") plt.savefig('Comparison.jpg', dpi=300)
注意事项
- 颜色格式支持:十六进制码(如
#FF5733)、RGB元组(如(0.8, 0.2, 0.1))、Matplotlib内置颜色名(如'red'、'darkblue')。 - 只要保持使用同一套颜色配置,无论生成多少次图表,对应列的折线颜色都会完全一致。
内容的提问来源于stack exchange,提问作者Terminator6677
相关产品推荐
相关产品推荐

