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

Pandas DataFrame绘制堆叠柱状图颜色重复,如何实现类别颜色唯一?

问题描述

根据Pandas官方手册,colormap参数可用于从matplotlib的colormap对象中选择颜色,但绘制柱状图时,若未手动设置每个柱子的颜色,默认仅提供10种独特颜色,当类别(列)数量较多时颜色会重复,手动设置工作量极大。期望让图表中每个类别都拥有唯一颜色。

复现代码

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 25)), columns=list('ABCDEFGHIJKLMNOPQRSTUVWXY'))
df.set_index('A', inplace=True)
df.plot(kind='bar', stacked=True, figsize=(20, 10))
plt.title("some_name")
plt.savefig("some_name" + '.png')

解决方案

核心思路是从matplotlib的colormap中生成与类别数量匹配的唯一颜色列表,传给df.plot()的color参数即可。

方法1:基于连续colormap生成颜色

选择连续型colormap(如viridis、plasma等),生成对应数量的颜色:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import cm

df = pd.DataFrame(np.random.randint(0,100,size=(100, 25)), columns=list('ABCDEFGHIJKLMNOPQRSTUVWXY'))
df.set_index('A', inplace=True)

# 获取列数并生成对应数量的颜色
num_categories = len(df.columns)
# 指定colormap并设置生成颜色的数量
cmap = cm.get_cmap('viridis', num_categories)
# 提取颜色列表
colors = [cmap(i) for i in range(num_categories)]

# 绘图时传入color参数
df.plot(kind='bar', stacked=True, figsize=(20, 10), color=colors)
plt.title("some_name")
plt.savefig("some_name" + '.png')
plt.show()

方法2:使用离散型colormap

如果需要更高区分度的离散颜色,可选择离散型colormap(如tab20c、gist_ncar等),这类colormap包含更多预设离散颜色:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import cm

df = pd.DataFrame(np.random.randint(0,100,size=(100, 25)), columns=list('ABCDEFGHIJKLMNOPQRSTUVWXY'))
df.set_index('A', inplace=True)

num_categories = len(df.columns)
# 选择离散colormap并适配颜色数量
cmap = cm.get_cmap('tab20c', num_categories)
colors = [cmap(i) for i in range(num_categories)]

df.plot(kind='bar', stacked=True, figsize=(20, 10), color=colors)
plt.title("some_name")
plt.savefig("some_name" + '.png')
plt.show()

说明

Pandas默认使用matplotlib的默认颜色循环(仅10种颜色),因此类别数量超过10时会重复颜色。通过上述方法从colormap生成足够数量的唯一颜色,即可解决该问题。你可根据需求选择不同的内置colormap。


内容的提问来源于stack exchange,提问作者Jürgen K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:02