[英]How to write text above the bars on a bar plot (Python)?
I have this graph:我有这张图:
<\/a> 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 without success.
我尝试了一些没有成功的东西。
This is the code for the graph:这是图表的代码:
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)
plt.bar(np.arange(len(errorRateListOfFast))+ bar_width, errorRateListOfFast, bar_width, align='center', alpha=opacity, color='b', label='Fast <= 6 sec.')
plt.bar(range(len(errorRateListOfSlow)), errorRateListOfSlow, bar_width, align='center', alpha=opacity, color='r', label='Slower > 6 sec.')
plt.legend()
plt.tight_layout()
plt.show()
plt.bar()
returns a list of rectangles that can be used to position suitable text above each of the bars as follows: plt.bar()
返回一个矩形列表,可用于在每个条形上方放置合适的文本,如下所示:
import matplotlib.pyplot as plt
import numpy as np
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']
# Convert to floats
errorRateListOfFast = [float(x) for x in errorRateListOfFast]
errorRateListOfSlow = [float(x) for x in errorRateListOfSlow]
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, f'{height:.0f}', 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, ie horizontal and vertical alignment. ha='center'
和va='bottom'
指的是文本如何相对于x
和y
坐标对齐,即水平和垂直对齐。
Check out the following link, it may help:查看以下链接,它可能会有所帮助:
http://matplotlib.org/examples/api/barchart_demo.html http://matplotlib.org/examples/api/barchart_demo.html
Today you can use this simple snippet:今天你可以使用这个简单的片段:
ax = plt.bar(...)
ax.bar_label(ax.containers[0])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.