我有一个工作日的数据框。我需要在条形图上以不同的颜色突出显示周末('周六''周日')。我找到了一些解决方案,我可以通过index.get_indexer设置不同的颜色。但是如何通过设置条件更有效地做到这一点呢?非常感谢您的帮助!
# create an example of my df
dates = pd.DataFrame({'dates': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday',
'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
'stats':[10,20,30,40,50,60,70,10,20,30,40,50,60,70],
'other':[44,55,66,88,33,22,11,44,55,66,88,33,22,11]})
# And plot it...
ax = dates.plot(x='dates', y='stats', kind='bar', color='b')
ax.patches[dates.index.get_indexer([5])[0]].set_facecolor('orange')
ax.patches[dates.index.get_indexer([6])[0]].set_facecolor('orange')
# etc...
ax.legend()
plt.show()
答案 0 :(得分:1)
您可以遍历数据框并将匹配“星期六”或“星期日”的补丁设置为橙色。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# create an example of my df
dates = pd.DataFrame({'dates': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday',
'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
'stats':[10,20,30,40,50,60,70,10,20,30,40,50,60,70],
'other':[44,55,66,88,33,22,11,44,55,66,88,33,22,11]})
ax = dates.plot(x='dates', y='stats', kind='bar', color='b')
weekend = (dates['dates']=='Sunday') | (dates['dates']=='Saturday')
for i,b in enumerate(weekend):
if b:
ax.patches[i].set_facecolor('orange')
ax.legend()
plt.show()
不确定这是否是最有效的方式。