如何在 Matplotlib 堆积条形图中将数据标签居中?

DDD
发布: 2024-11-24 00:41:10
原创
428 人浏览过

How to Center Data Labels in a Matplotlib Stacked Bar Chart?

带有居中标签的堆叠条形图:使用 bar_label 的改进解决方案

在 matplotlib 中,一种精确地将堆叠中的数据标签居中的改进方法使用 bar_label 函数可以使用条形图。操作方法如下:

  1. 导入必要的模块:首先导入必要的库。
import pandas as pd
import matplotlib.pyplot as plt
登录后复制
  1. 创建并填充您的 DataFrame:要创建堆积条形图,建议使用一个 pandas 数据框。这是一个包含三列的示例 DataFrame:“A”、“B”和“C”。
# sample DataFrame
df = pd.DataFrame({'A': [45, 17, 47], 'B': [91, 70, 72], 'C': [68, 43, 13]})
登录后复制
  1. 绘制堆叠条形图:利用用于绘制堆积条形图的 DataFrame
ax = df.plot(kind='bar', stacked=True, figsize=(8, 6), rot=0, xlabel='Class', ylabel='Count')
登录后复制
  1. 标记条形:现在,让我们标记条形,同时确保它们居中。使用 bar_label 来完成此操作。
for c in ax.containers:
    ax.bar_label(c, label_type='center')
登录后复制

可选自定义

  • 零或小标签:适用于零的片段或较小的值,根据需要调整标签可见性。例如,仅当值超过某个阈值时才显示值或使用 label_type='edge' 选项。
labels = [v.get_height() if v.get_height() > 0 else '' for v in c]  # for segments with small or zero values
登录后复制
  • 自定义格式:修改标签格式以满足您的要求。
ax.bar_label(c, fmt=lambda x: f'{x:.0f}' if x > 0 else '', label_type='center')  # to show no decimal places
登录后复制

Seaborn替代方案

如果您更喜欢使用seaborn,您还可以创建堆叠条形图并为条形图添加标签。

  1. 准备DataFrame:类似对于 matplotlib,使用数据创建一个 pandas DataFrame。
  2. 将 DataFrame 转换为 long form:seaborn要求DataFrame为长格式,这可以使用melt来实现。
  3. 绘制图表并标记条形:绘制堆叠条形图并应用bar_label 与 matplotlib 中一样。

以上是如何在 Matplotlib 堆积条形图中将数据标签居中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板