如何在Python的pandas柱状图柱子上方显示count数值
给柱状图柱子添加数值标签的解决方案
要给每个柱子上方显示对应的count数值,你可以在绘图后遍历所有柱子,用Matplotlib的文本标注功能添加数值。修改后的完整代码如下:
import pandas as pd import matplotlib.pyplot as plt my_data = { "source": ['Live','Twitter','Twitter','Telegram','Telegram'], "second_source":['Qa','Unspecified','Da','Hzo','Tolib'], "count":[7,1,1,1,1] } my_dataframe = pd.DataFrame(my_data) # 按两列分组并求和 grouped_dataframe = my_dataframe.groupby(['source', 'second_source']).agg('sum') # 绘制柱状图并获取轴对象 ax = grouped_dataframe.plot(kind='bar', figsize=(10,5)) # 遍历每个柱子,添加数值标签 for p in ax.patches: # 获取柱子的高度(即count值) height = p.get_height() # 在柱子中心上方添加文本 ax.text( p.get_x() + p.get_width() / 2., # 文本的x坐标(柱子中心) height, # 文本的y坐标(柱子顶部) str(height), # 要显示的数值 ha='center', # 水平居中 va='bottom' # 垂直对齐方式,让文本在柱子顶部下方 ) plt.xticks(rotation=40, ha='right') plt.title("Sources") plt.show()
关键代码说明
ax = grouped_dataframe.plot(...):获取绘图的轴对象,方便后续操作柱子元素ax.patches:获取图表中所有的柱子对象ax.text(...):在指定坐标位置添加文本,通过参数控制文本的对齐方式,确保数值在柱子正上方显示
内容的提问来源于stack exchange,提问作者maria bandoria
相关产品推荐
相关产品推荐

