如何为多层柱状图的阴影柱体添加百分比数据标签
解决方案
要给buyers对应的阴影柱体添加percentage列的数据,你可以通过定位到buyers柱体对应的容器,传入自定义的百分比标签来实现,具体修改如下:
修改后的完整代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df = pd.DataFrame({'id': [1, 2, 3], 'users': [40, 2, 51], 'buyers': [15, 1, 29], 'percentage': [37.5000, 50.0000, 56.8627]}) fig, ax = plt.subplots(figsize=(10, 6)) # 绘制总用户柱体 sns.barplot(x='id', y='users', data=df, palette='Blues', edgecolor='grey', alpha=0.7) # 绘制购买用户阴影柱体 sns.barplot(x='id', y='buyers', data=df, palette='Blues', edgecolor='black', hatch='//') # 显示总用户柱体的数值 ax.bar_label(ax.containers[0], fontsize=13) # 给购买用户柱体添加格式化后的百分比标签 ax.bar_label(ax.containers[1], labels=[f'{p:.2f}%' for p in df['percentage']], fontsize=13, padding=5) plt.show()
关键说明
ax.containers的顺序与绘图顺序一致:第一个容器对应先绘制的users柱体,第二个对应后绘制的buyers阴影柱体- 通过
labels参数传入自定义文本,用列表推导式把数值格式化为带%的字符串,同时保留两位小数 padding参数可调整标签与柱体顶部的距离,避免出现重叠问题
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

