Python pandas / matplotlib annotating labels above bar chart columns

前端 未结 2 1922
旧巷少年郎
旧巷少年郎 2020-11-30 06:54

How do I add the label for the value to display above the bars in the bargraph here:

import pandas as pd
import matplotlib.pyplot as plt

df=pd.DataFrame({\'         


        
相关标签:
2条回答
  • 2020-11-30 07:20

    Capture the axis where the plot is drawn into, then manipulate it as a usual matplotlib object. Putting the value above the bar will be something like this:

    ax = df.plot(kind='bar',  title='Scores')
    ax.set_ylim(0, 12)
    for i, label in enumerate(list(df.index)):
        score = df.ix[label]['Score']
        ax.annotate(str(score), (i, score + 0.2))
    
    0 讨论(0)
  • 2020-11-30 07:38

    A solution without accessing the DataFrame is to use the patches attribute:

    ax = df.plot.bar(title="Scores")
    for p in ax.patches:
        ax.annotate(str(p.get_height()), xy=(p.get_x(), p.get_height()))
    

    Note you have to play around with the xy kwarg (2nd arg) to get the label position you desire.

    Vertical Bars

    I found this formatting to be the best in general:

    ax.annotate("%.2f" % p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')
    

    Horizontal Bars

    I found the following format to work well with horizontal bars:

    ax.annotate("%.2f" % p.get_width(), (p.get_x() + p.get_width(), p.get_y()), xytext=(5, 10), textcoords='offset points')
    
    0 讨论(0)
提交回复
热议问题