迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Matplotlib 条形图上添加值标签

作者:迹忆客 最近更新:2023/03/17 浏览次数:

Matplotlib 条形图是在 Python 中可视化数据的好方法。在条形图中,我们经常需要添加标签来可视化数据。本文将介绍在 Matplotlib 条形图上添加值标签的各种方法。

使用 pyplot.text() 方法在 Matplotlib 条形图上添加值标签

要在 Matplotlib 条形图上添加值标签,我们可以使用 pyplot.text() 函数。

Matplotlib 模块中的 pyplot.text() 函数用于将文本值添加到图中的任何位置。pyplot.text() 函数的语法如下。

matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)

这里,

  • 参数 xy 是放置文本的图形坐标。参数 s 包含文本字符串。
  • 参数 fontdict 用于更改文本的字体和大小等属性。它的默认值是 None
  • **kwargs 参数表示用于确定条形图中文本位置的其他参数。

在本文中,我们将使用参数 ha 来决定文本的水平对齐方式。你可以从 text() 函数的官方文档 中更深入地了解该函数的其他参数。

现在让我们绘制一个条形图,然后为其添加值标签。假设我们有一所学校从班级 1 到班级 10 的一个班级的学生人数数据以列表的形式如下。

no_of_students=[10,24,45,30,23,56,67,34,45,50]

这里,索引 i 代表班级 i+1 的学生人数。为了绘制数据,我们将创建一个列表 class_number,其中包含从 1 到 10 的数字。之后,我们将使用 pyplot.bar() 函数绘制条形图。然后,我们将分别使用 title()xlabel()ylabel() 函数将 titlexlabelylabel 添加到图中。

为了添加值标签,我们将定义一个函数 add_value_label(x_list,y_list)。这里,x_listy_list 是包含 x 轴和 y 轴数据的列表,即 class_numberno_of_students

在函数 add_value_label() 中,我们将值标签的坐标指定为 (x, the height of the bar chart at x),以便将值标签添加到条形图的顶部。传递给 text 函数的文本值将是条形图在 x 处的高度。此处,x 将是 class_number 的元素,而 the height of bar chart at x 将是班级 x 中相应的学生人数。

例如,我们将每个班级的学生人数作为值标签添加到条形图的顶部。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.text(i,y_list[i-1],y_list[i-1])

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students)
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用文本在 Matplotlib 条形图上默认添加值标签

你可能会观察到值标签不在输出条形图顶部的中心。我们可以通过操作输入参数来做到这一点,如以下部分所述。

在每个条形图的中心在 Matplotlib 条形图上添加值标签

要在条形图顶部中心的 Matplotlib 条形图上添加值标签,我们将在 pyplot.text() 函数中指定水平对齐方式为 center,如下所示。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.text(i,y_list[i-1],y_list[i-1], ha="center")

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students )
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用文本在 Matplotlib 条形图上居中添加值标签

在每个条形高度中间的 Matplotlib 条形图上添加值标签

你还可以在每个条形高度的中间添加值标签。为此,我们必须在 pyplot.text() 函数中将 y 坐标指定为 (x 处条形图的高度)/2。你可以在以下示例代码中看到这一点。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.text(i,y_list[i-1]/2,y_list[i-1], ha="center")

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students )
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用文本在 Matplotlib 条形图上的高度中心添加值标签

使用 pyplot.annotate() 函数在 Matplotlib 条形图上添加值标签

除了 pyplot.text() 函数,我们可以使用 pyplot.annotate() 函数在 matplotlib 条形图上添加值标签。pyplot.annotate() 函数的语法如下。

matplotlib.pyplot.annotate(text, xy, *args, **kwargs)

这里,

  • 参数 text 是将添加到图表中的标签。
  • 参数 xy 接受一个元组 (x,y),其中 xy 是将标签添加到图形的坐标。
  • 该函数接受许多不同的参数。本文将仅使用参数 ha 来设置条形图中标签的水平对齐方式。

我们将使用 pyplot.bar() 函数绘制条形图。然后,我们将分别使用 title()xlabel()ylabel() 函数将 titlexlablelylabel 添加到图中。

为了在 Matplotlib 条形图上添加值标签,我们将定义一个函数 add_value_label(x_list,y_list)。这里,xy 是包含 x 轴和 y 轴数据的列表。在函数 add_value_label() 中,我们将根据为 xy 坐标提供的数据创建的元组作为输入参数传递给参数 xy。有了这个,我们将其他值传递给 annotate() 函数,以在 Matplotlib 条形图上添加值标签,如下所示。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.annotate(y_list[i-1],(i,y_list[i-1]))

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students )
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用 Annotate 在 Matplotlib 条形图上默认添加值标签

同样,你可以观察到标签未与条形图对齐。要对齐它们,你可以使用水平对齐参数 ha 设置以下对齐方式。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.annotate(y_list[i-1],(i,y_list[i-1]),ha="center")

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students )
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用 Annotate 在 Matplotlib 条形图上居中添加值标签

你还可以在每个条形高度的中间添加值标签。为此,我们必须将元组中的 y 坐标指定为 (x 处条形图的高度)/2。你可以在以下示例代码中看到这一点。

import matplotlib.pyplot as plt

def add_value_label(x_list,y_list):
    for i in range(1, len(x_list)+1):
        plt.annotate(y_list[i-1],(i,y_list[i-1]/2),ha="center")

no_of_students=[10,24,45,30,23,56,67,34,45,50]
class_number=[1,2,3,4,5,6,7,8,9,10]
plt.bar(class_number,no_of_students )
add_value_label(class_number,no_of_students)
plt.title("No of Students in a class")
plt.xlabel("Class")
plt.ylabel("Number of Students")
plt.show()

输出:

使用 Annotate 在 Matplotlib 条形图上添加值标签

结论

本文讨论了使用 text() 函数和 annotate() 函数在 Matplotlib 条形图上添加值标签的两种方法。我们还看到了如何通过更改参数来决定标签的对齐方式和位置。你可以根据自己的方便使用任何讨论过的方法在 Matplotlib 条形图上添加值标签。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便