如何影响 matplotlib 中直方图索引栏的颜色列表?

How to affect a list of colors to histogram index bar in matplotlib?

我有以下带有索引(SD 到 SD17)和相关值(频率)的数据帧“freqs2”:

    freqs
SD  101
SD2 128
...     
SD17 65

我想影响每个索引的精确颜色列表(按顺序)。我试过以下代码:

colors=['#e5243b','#DDA63A', '#4C9F38','#C5192D','#FF3A21','#26BDE2','#FCC30B','#A21942','#FD6925','#DD1367','#FD9D24','#BF8B2E','#3F7E44','#0A97D9','#56C02B','#00689D','#19486A']
freqs2.plot.bar(freqs2.index, legend=False,rot=45,width=0.85, figsize=(12, 6),fontsize=(14),color=colors )
plt.ylabel('Frequency',fontsize=(17))

因此,我获得了所有红色图表条(列表的第一种颜色)。

基于类似的问题,我尝试整合“freqs2.index”来规定颜色列表关注索引,但问题仍然存在。

它看起来像是 pandas 中的错误,直接在 matplotlib 中绘图或使用 seaborn(我推荐)有效:

import seaborn as sns

colors=['#e5243b','#dda63a', '#4C9F38','#C5192D','#FF3A21','#26BDE2','#FCC30B','#A21942','#FD6925','#DD1367','#FD9D24','#BF8B2E','#3F7E44','#0A97D9','#56C02B','#00689D','#19486A']

# # plotting directly with matplotlib works too:
# fig = plt.figure()
# ax = fig.add_axes([0,0,1,1])
# ax.bar(x=df.index, height=df['freqs'], color=colors)

ax = sns.barplot(data=df, x= df.index, y='freqs', palette=colors)
ax.tick_params(axis='x', labelrotation=45)

plt.ylabel('Frequency',fontsize=17)
plt.show()

编辑:Github

上已经存在问题