How to write text above the bars on a bar plot (Python)?

前端 未结 2 1442
长发绾君心
长发绾君心 2020-12-31 03:09

I have this graph: I want to write the count above each column. These values are in the first and second lists. Can you help me solve this problem? I tried something withou

相关标签:
2条回答
  • 2020-12-31 03:45

    plt.bar() returns a list of rectangles that can be used to position suitable text above each of the bars as follows:

    import matplotlib.pyplot as plt
    import numpy as np
    
    countListFast = [1492.0, 497.0, 441.0, 218.0, 101.0, 78.0, 103.0]
    countListSlow = [1718.0, 806.0, 850.0, 397.0, 182.0, 125.0, 106.0]
    
    errorRateListOfFast = ['9.09', '9.09', '9.38', '9.40', '7.89', '8.02', '10.00']
    errorRateListOfSlow = ['10.00', '13.04', '14.29', '12.50', '14.29', '14.53', '11.11']
    
    opacity = 0.4
    bar_width = 0.35
    
    plt.xlabel('Tasks')
    plt.ylabel('Error Rate')
    
    plt.xticks(range(len(errorRateListOfFast)),('[10-20)', '[20-30)', '[30-50)', '[50-70)','[70-90)', '[90-120)', ' [120 < )'), rotation=30)
    bar1 = plt.bar(np.arange(len(errorRateListOfFast))+ bar_width, errorRateListOfFast, bar_width, align='center', alpha=opacity, color='b', label='Fast <= 6 sec.')
    bar2 = plt.bar(range(len(errorRateListOfSlow)), errorRateListOfSlow, bar_width, align='center', alpha=opacity, color='r', label='Slower > 6 sec.')
    
    # Add counts above the two bar graphs
    for rect in bar1 + bar2:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2.0, height, '%d' % int(height), ha='center', va='bottom')
    
    plt.legend()
    plt.tight_layout()
    plt.show()
    

    Giving you:

    ha='center' and va='bottom' refer to how the text is aligned in relation to the x and y co-ordinates, i.e. horizontal and vertical alignment.

    0 讨论(0)
  • 2020-12-31 04:00

    Check out the following link, it may help:

    http://matplotlib.org/examples/api/barchart_demo.html

    0 讨论(0)
提交回复
热议问题