如何为Seaborn的countplot添加百分比显示?
为Seaborn条形图添加百分比标注
你可以通过在计数条形图基础上添加文本标注的方式显示百分比,以下是修改后的完整代码及说明:
修改后的代码
import seaborn as sns import matplotlib.pyplot as plt sns.set_style('whitegrid') # 绘制计数条形图并获取轴对象 ax = sns.countplot(y='type', data=df, palette='colorblind') # 计算总样本数量 total = df['type'].value_counts().sum() # 遍历每个条形,添加百分比标注 for p in ax.patches: # 计算百分比,保留1位小数 percentage = '{:.1f}%'.format(100 * p.get_width() / total) # 在条形右侧放置文本,垂直居中对齐 ax.text(p.get_width() + 5, p.get_y() + p.get_height()/2, percentage, va='center') plt.xlabel('数量') plt.ylabel('类型') plt.title('Disney+影片类型分布') plt.show()
关键改动说明
- 获取绘图的
ax对象,方便后续操作条形元素 - 计算总样本数
total,作为百分比计算的基数 - 遍历每个条形(
ax.patches),通过p.get_width()获取当前条形的计数,除以总数得到百分比 - 使用
ax.text()在条形右侧添加百分比文本,调整位置保证垂直居中、不遮挡条形
效果说明
修改后的图表会保留原有的数量轴,同时在每个条形旁显示对应类别的占比百分比,既展示了各类别的绝对数量,又补充了相对占比的视角。
内容的提问来源于stack exchange,提问作者EyeOfIlum
相关产品推荐
相关产品推荐

