python绘制柱状图,并添加标签

这篇具有很好参考价值的文章主要介绍了python绘制柱状图,并添加标签。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 绘图

利用下面的代码,绘制柱状图。

#  season number , warning!!! not percent
def season_number(data_all_profile, output_num_season_png, sector_id=None, terrain=None, label=None):
    df_season = data_all_profile['season'].value_counts()
    # 希望的排序列表
    desired_order = ['spring', 'summer', 'autumn', 'winter']

    # 使用reindex方法按指定顺序重新排序
    sorted_result = df_season.reindex(desired_order)

    df_season = pd.DataFrame(sorted_result)
    df_season.rename(columns={'season': 'count'}, inplace=True)
    df_season = df_season.reset_index().rename(columns={'index': 'season'})

    # 创建柱状图
    plt.figure(figsize=(5, 3))
    bars = plt.bar(df_season['season'], df_season['count'], width=0.3)

    # 添加数据标签
    for bar in bars:
        height = bar.get_height()
        plt.annotate(f'{height}',
                     xy=(bar.get_x() + bar.get_width() / 2, height),
                     xytext=(0, 3),  # 3 points vertical offset
                     textcoords="offset points",
                     ha='center', va='bottom')

    # 调整y轴上限,以确保标签可见
    plt.ylim(0, max(df_season['count']) * 1.1)

    plt.xticks(rotation=0)
    plt.xlabel('season', fontsize=11)
    plt.ylabel('数量(个)', fontsize=11)
    plt.title('各季节风廓线数量分布')
    plt.title(f'{terrain}-区域{sector_id}各季节风廓线数量分布')
    plt.tight_layout()
    plt.savefig(output_num_season_png)  # 将图片保存为 output.png 文件
    plt.close()

csdnpython柱状图添加数据标签,# 9.绘图与可视化,python,开发语言

2. 解读

2.1 绘制标签

难点:绘制标签

# 添加数据标签
for bar in bars:
    height = bar.get_height()
    plt.annotate(f'{height}',
                 xy=(bar.get_x() + bar.get_width() / 2, height),
                 xytext=(0, 3),  # 3 points vertical offset
                 textcoords="offset points",
                 ha='center', va='bottom')

bar.get_height()用于获取柱子的高度,也就是柱状图中每个柱子的高度值。在上面的代码中,我们使用这个高度值来确定要在柱子上方添加的数据标签的位置。

具体来说,这行代码:

height = bar.get_height()

height设置为当前柱子的高度。然后,在plt.annotate()函数中,我们使用xy参数将标签的位置设置在柱子的中间,而height表示了柱子的高度,因此数据标签会被添加到每个柱子的中间位置,以显示柱子所代表的数据值。

这是一种常见的用法,用于在柱状图中添加数据标签。

2.2 代码解读

解释:xy=(bar.get_x() + bar.get_width() / 2, height)

代码 xy=(bar.get_x() + bar.get_width() / 2, height) 主要用于确定要放置数据标签的位置,具体来说:

  1. bar.get_x() 获取柱子的左边界的 x 坐标。
  2. bar.get_width() 获取柱子的宽度。
  3. bar.get_x() + bar.get_width() / 2 计算出柱子的中心 x 坐标。
  4. height 是柱子的高度,即柱子所代表的数据值。

这行代码将数据标签的位置设置为柱子的中心,横坐标为柱子中心的 x 坐标,纵坐标为柱子的高度,这样标签就会位于柱子的顶部中央,以显示柱子所代表的具体数据值。

例如,假设某个柱子的左边界的 x 坐标是 10,宽度是 2,高度是 20,那么这行代码的计算如下:

  1. bar.get_x() 得到 10。
  2. bar.get_width() 得到 2。
  3. bar.get_x() + bar.get_width() / 2 得到 11,这是柱子的中心 x 坐标。
  4. height 得到 20,柱子的高度。

因此,xy参数被设置为 (11, 20),这是数据标签的位置,使得标签位于柱子的中央顶部,以显示数据值 20。这种方法可确保数据标签位于柱子的合适位置,使得图表更易于理解。

2.3 xytext=(0, 3)

xytext 参数用于指定标签文本的偏移量,它是一个二元组,表示文本相对于 xy 参数指定的坐标的偏移量,其中第一个值表示水平偏移,第二个值表示垂直偏移。

在代码中,xytext=(0, 3) 的含义是:

  • 水平偏移为 0,表示标签文本在水平方向上不进行偏移。
  • 垂直偏移为 3,表示标签文本在垂直方向上相对于 xy 参数指定的坐标向上偏移 3 个单位。

这个偏移的目的是为了让数据标签稍微上移一点,以使标签文本不会与柱子的顶部重叠,从而更清晰地显示数据标签。通过微小的垂直偏移,可以改善标签的可读性,确保它们不会覆盖柱子或其他元素。

您可以根据需要调整 xytext 参数的值,以更好地控制标签的位置和外观。

2.4 textcoords=“offset points”

textcoords="offset points"annotate 函数中的一个参数,用于指定文本注释的坐标系统。具体来说,它告诉函数如何解释 xyxytext 参数中的坐标值。

在这种情况下,textcoords 被设置为 "offset points",意味着 xyxytext 中的坐标值将被解释为以点(points)为单位的偏移量。这是为了方便指定相对于柱子或数据点的偏移量,而不是使用绝对的坐标值。

例如,如果您设置 xy=(11, 20)xytext=(0, 3),那么这意味着:

  • xy=(11, 20) 表示数据标签的基准点位于柱子中心的水平位置 x=11,垂直位置 y=20。
  • xytext=(0, 3) 表示相对于 xy 指定的点,文本标签将向水平和垂直方向分别偏移 0 个点和 3 个点。

通过这种方式,您可以方便地指定相对于数据点的偏移量,以更好地控制标签的位置。如果您选择其他坐标系统,例如 "figure fraction""axes fraction",那么坐标值将被解释为相对于图形或轴的比例位置。

havaannotate 函数中的参数,用于控制文本注释(标签)的水平对齐和垂直对齐方式。

  • ha 表示水平对齐方式,它有以下可能的取值:

    • 'center':文本水平居中对齐,默认值。
    • 'left':文本左对齐。
    • 'right':文本右对齐。
  • va 表示垂直对齐方式,它有以下可能的取值:

    • 'center':文本垂直居中对齐,默认值。
    • 'top':文本顶部对齐。
    • 'bottom':文本底部对齐。

在您提供的代码中,ha='center' 表示文本水平居中对齐,va='bottom' 表示文本底部对齐。这意味着数据标签的文本将以底部对齐到 xy 指定的点。通常,这是一个常见的设置,以确保标签文本在柱子或数据点的底部显示,使其更易于阅读。

如果需要,您可以根据需要更改这些参数,以调整标签的水平和垂直对齐方式,以满足您的可视化需求。例如,将 va 设置为 'center' 将使文本垂直居中对齐,而将 ha 设置为 'left' 将使文本左对齐。

3.标签获取(解读)

for category in normalized_table_T.index:
    for i, value in enumerate(normalized_table_T.loc[category]):
        plt.text(i, value, f'{value:.2f}', ha='center', va='bottom', fontsize=10,
                 color=colors[normalized_table_T.index.get_loc(category)])

这段代码主要是用于在图表上为每个数据点添加文本标签。下面是对代码的逐行解读:

  1. for category in normalized_table_T.index::这一行是遍历normalized_table_T的索引,其中normalized_table_T是一个pandas DataFrame。

  2. for i, value in enumerate(normalized_table_T.loc[category])::这一行是遍历给定类别category下的所有值。enumerate用于获取每个值的索引i和值value

  3. plt.text(i, value, f'{value:.2f}', ha='center', va='bottom', fontsize=10, color=colors[normalized_table_T.index.get_loc(category)]):这一行是用于在图表上添加文本标签的。

    • i, value:这是文本标签的位置。i是x坐标,value是y坐标。
    • f'{value:.2f}':这是要显示的文本,它使用f-string格式化,显示value的值并保留两位小数。
    • ha='center', va='bottom':这些是文本对齐选项。ha是水平对齐方式,这里设置为居中;va是垂直对齐方式,这里设置为底部。
    • fontsize=10:设置字体大小为10。
    • color=colors[normalized_table_T.index.get_loc(category)]:设置文本颜色。它从colors列表中获取一个颜色值,这个列表应该事先定义好了。normalized_table_T.index.get_loc(category)获取categorynormalized_table_T索引中的位置,然后用这个位置从colors列表中获取颜色。

总的来说,这段代码遍历一个名为normalized_table_T的DataFrame,并在每个数据点上添加一个显示其值的文本标签,这些标签在图表上是居中且位于数据点的下方,字体大小为10,颜色根据类别从colors列表中获取。文章来源地址https://www.toymoban.com/news/detail-802060.html

到了这里,关于python绘制柱状图,并添加标签的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pearson相关性分析& plot绘图(相关性系数柱状图、绘制非空值数量柱状图)

    Pearson相关性分析是一种用于检测两个变量之间线性关系强度的统计方法,其结果介于-1和1之间。一个相关系数为1表示完全正相关,-1表示完全负相关,0则表示没有线性关系。 Pearson相关性分析假设数据来自正态分布,并且对异常值敏感。

    2024年02月09日
    浏览(28)
  • Python Matplotlib数据可视化绘图之(一)————柱状图

    本文我们主要介绍利用Python中的Matplotlib模块进行几种柱状图的画法,包括整张图片只有一种颜色的不分组柱状图、整张图片有好几种颜色的不分组柱状图、整张图片有好几种颜色的分组柱状图等。 主要利用Python中的Matplotlib模块完成该功能。 表格如下(示例): 语言种类

    2024年02月06日
    浏览(39)
  • 探索数据之美:初步学习 Python 柱状图绘制

    pyecharts 是一个基于 Echarts 的 Python 图表库,它提供了丰富的图表类型和交互功能。可以使用使用 pyecharts 创建柱状图 首先,安装 pyecharts 库。如果没有安装,可以使用以下命令安装: 然后,创建一个简单的柱状图: 在这个示例中,首先导入 pyecharts 的必要模块。然后,创建一

    2024年02月12日
    浏览(27)
  • 跟着Nature Communications学作图:纹理柱状图+添加显著性标签!

       跟着「Nature Communications」学作图,今天主要通过复刻NC文章中的一张主图来巩固先前分享过的知识点,比如纹理柱状图、 添加显著性标签、拼图等,其中还会涉及数据处理的相关细节和具体过程。 主要复现红框部分,右侧的cd图与框中的图是同类型的,只不过需要构建更

    2024年02月06日
    浏览(48)
  • python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充

    往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 python随机生成数据并用双y轴绘制两条带误差

    2024年02月10日
    浏览(36)
  • 【Python数据可视化】matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图

    文章传送门 Python 数据可视化 matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图 matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值 matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果 matplo

    2024年01月16日
    浏览(37)
  • python如何绘制柱状图

    安装两种插件 柱状图绘制步骤 导入 matplotlib.pyplot 模块 准备数据,可以使用 numpy/pandas 整理数据 调用 pyplot.bar() 绘制柱状图 上代码 效果图 函数解析 plt.bar() 用于画柱状图,还可以使用 plt.plot() 绘制折线图 plt.xlabel() plt.ylabel() 用于标注x轴、y轴 plt.title() 用于给图片添加标题

    2024年02月11日
    浏览(30)
  • Python绘制柱状图堆叠图

    本文详细介绍如何使用 Matplotlib 绘制柱状堆叠图 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 开始绘制柱状堆叠图之前,我们需要生成实验数据。在本案例中,我们可以使用 NumPy 库生成两个数组 y1 和 y2 来分别表示产品 A 和 B 在五个不同城

    2024年02月07日
    浏览(31)
  • 超详细的Python matplotlib 绘制柱状图

    Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图、柱状图、散点图等高质量的数据包。 关于 matplotlib 模块,我们前期已经对matplotlib进行基本框架、以及常用方法的学习 Python matplotlib 绘制饼图_ python matplotlib绘制折线图_ python入门到进阶,

    2023年04月08日
    浏览(34)
  • 添加数据维度并使用Python绘制5D散点图

    大家好,散点图通常用于比较2个不同特征以确定它们之间的关系,散点图也可以添加更多的维度来反映数据,例如使用颜色、气泡大小等。在本文中,将介绍如何绘制一个五维的散点图。 数据集:  让我们从二维开始,简单地看一下 Healthy_life_expectancy_at_birth 和 Log_GDP_per_ca

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包