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

如何修改Pandas DataFrame堆叠面积图的填充颜色?

修改Pandas堆叠面积图的填充颜色

嘿,这问题其实不难搞定,不用太纠结Axes类的复杂细节,给你两种实用的方法:

方法1:直接在绘图时指定颜色(最推荐)

df.plot.area()本身就支持colors参数,你只需要传入一个和列数对应的颜色列表就行,顺序和DataFrame的列顺序一一对应。比如:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
# 自定义颜色,每个颜色对应一列的填充色
custom_colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']
ax = df.plot.area(linewidth=0, colors=custom_colors);

你可以用十六进制颜色码、matplotlib内置的颜色名称(比如'red'、'blue'),甚至RGB元组(比如(0.8, 0.2, 0.2))来定义颜色。

方法2:生成图后修改已有的填充区域

如果已经生成了Axes实例ax,想要调整颜色,可以通过遍历ax.patches来修改每个堆叠区域的填充色。这里要注意:堆叠面积图的patches顺序是从上层到下层的,也就是和DataFrame的列顺序相反,所以颜色列表要反过来写:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax = df.plot.area(linewidth=0);

# 颜色顺序对应上层到下层的堆叠区域(和df列顺序相反)
custom_colors = ['#ffcc99', '#99ff99', '#66b3ff', '#ff9999']
for patch, color in zip(ax.patches, custom_colors):
    patch.set_facecolor(color)

额外技巧:用colormap批量生成颜色

如果不想手动写颜色列表,可以用matplotlib的colormap来生成一组协调的颜色,比如:

import pandas as pd
import numpy as np
from matplotlib import cm

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
# 从viridis色卡生成对应列数的颜色
custom_colors = cm.get_cmap('viridis', len(df.columns))(range(len(df.columns)))
ax = df.plot.area(linewidth=0, colors=custom_colors);

这样就能快速得到一组渐变的配色啦~

内容的提问来源于stack exchange,提问作者L. Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:28:49