如何使用 Matplotlib 和 Pandas 创建具有正确间距和准确注释的分组条形图?

Susan Sarandon
发布: 2024-11-03 12:23:29
原创
1039 人浏览过

How to create a grouped bar chart with correct spacing and accurate annotations using Matplotlib and Pandas?

绘制和注释分组条形图

错误分析

提供的使用 Matplotlib 在 Python 中创建分组条形图的代码包含错误。具体来说,w 的值不正确,并且使用自动标签的注释位置未对齐。

更正的 w 值:

w 的值应改为 0.8 / 3 0.8,以确保条形之间有适当的间距。

使用 Pandas 绘图

绘制分组条形图的更直接方法是使用 pandas DataFrames 的绘图方法。此方法可以轻松进行绘图和注释。

改进的注释放置

要准确地将注释放置在条形上方,请使用以下代码:

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha = 'center', va = 'center', xytext = (0, 10), textcoords = 'offset points')
登录后复制

这里是偏移量将点设置为 (0, 10),将注释对齐在条形中心正上方。

完整代码

更正和改进的代码如下:

import pandas as pd
import matplotlib.pyplot as plt

df = pandas.DataFrame({
    'Very interested': [1332, 1688, 429, 1340, 1263, 1629],
    'Somewhat interested': [729, 444, 1081, 734, 770, 477],
    'Not interested': [127, 60, 610, 102, 136, 74]
    }, index=['Big Data (Spark / Hadoop)', 'Data Analysis / Statistics', 'Data Journalism', 'Data Visualization', 'Deep Learning', 'Machine Learning'])

colors = ['#5cb85c', '#5bc0de', '#d9534f']
fig, ax = plt.subplots(figsize=(20, 8))

ax.set_ylabel('Percentage', fontsize=14)
ax.set_title(
    "The percentage of the respondents' interest in the different data science Area",
    fontsize=16)
ax.set_xticklabels(ax.get_xticklabels(), rotation=0)

df.plot.bar(ax=ax, color=colors)

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')

plt.show()
登录后复制

以上是如何使用 Matplotlib 和 Pandas 创建具有正确间距和准确注释的分组条形图?的详细内容。更多信息请关注PHP中文网其他相关文章!

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