如何在Seaborn柱状图的柱子内部添加数值?
在Seaborn柱状图柱子内部添加数值标签
当然可以实现这个需求!其实操作起来很简单,只需要在绘制完柱状图后,遍历每个柱子元素,然后在柱子的中心位置添加对应的数值文本即可。
下面是修改后的完整代码,我会给你拆解关键步骤:
import seaborn as sns sns.set_style("whitegrid") tips = sns.load_dataset("tips") ax = sns.barplot(x="day", y="total_bill", data=tips) # 遍历每个柱子,添加内部数值标签 for patch in ax.patches: # 获取当前柱子的高度(对应y轴的实际数据值) bar_height = patch.get_height() # 计算柱子的水平中心坐标 bar_center_x = patch.get_x() + patch.get_width() / 2 # 在柱子垂直中心位置添加数值标签 ax.text( bar_center_x, bar_height / 2, f'{bar_height:.2f}', # 保留两位小数,若要显示整数可改成f'{int(bar_height)}' ha='center', va='center', fontsize=10, color='white' )
关键细节说明:
ax.patches:这个对象包含了图表中所有的柱子元素,遍历它就能逐个处理每一根柱子patch.get_height():获取柱子的高度值,也就是对应的数据点数值patch.get_x() + patch.get_width() / 2:计算出柱子的水平中心位置,确保文字落在柱子正中间ax.text():用来添加文本标签,ha='center'和va='center'分别保证水平、垂直方向居中,白色文字在深色柱子里会更醒目,你也可以根据柱子颜色调整文字颜色
如果是像你说的要显示1-4这类整数,只需要把格式化字符串改成f'{int(bar_height)}'就可以啦。
内容的提问来源于stack exchange,提问作者LetzerWille
相关产品推荐
相关产品推荐

