如何影响 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
上已经存在问题
我有以下带有索引(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
上已经存在问题