代码之家  ›  专栏  ›  技术社区  ›  aviss

根据字符串值更改条形图的颜色

  •  0
  • aviss  · 技术社区  · 7 年前

    我有一个工作日的数据框。我需要在条形图上用不同的颜色突出显示周末(“周六”和“周日”)。我找到了一些解决方案,可以通过索引设置不同的颜色。获取索引器。但是,我如何通过设置条件来更有效地做到这一点呢?非常感谢您的帮助!

    # 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()
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   ImportanceOfBeingErnest    7 年前

    您可以在数据帧上循环,并将匹配“星期六”或“星期日”的修补程序设置为橙色。

    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()
    

    不确定这是否是最有效的方法。