Agregar etiquetas de valor en el gráfico de barras de Matplotlib

Aditya Raj 30 enero 2023
  1. Agregue etiquetas de valor en el gráfico de barras de Matplotlib utilizando el método pyplot.text()
  2. Agregue etiquetas de valor en el gráfico de barras de Matplotlib usando la función pyplot.annotate()
  3. Conclusión
Agregar etiquetas de valor en el gráfico de barras de Matplotlib

Los gráficos de barras de Matplotlib son una buena forma de visualizar datos en Python. En los gráficos de barras, a menudo necesitamos agregar etiquetas para visualizar los datos. Este artículo analizará las diversas formas de agregar etiquetas de valor en un gráfico de barras de Matplotlib.

Agregue etiquetas de valor en el gráfico de barras de Matplotlib utilizando el método pyplot.text()

Para agregar etiquetas de valor en un gráfico de barras Matplotlib, podemos usar la función pyplot.text().

La función pyplot.text() del módulo Matplotlib se usa para agregar valores de texto a cualquier ubicación en el gráfico. La sintaxis de la función pyplot.text() es la siguiente.

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

Aquí,

  • Los parámetros x e y son las coordenadas del gráfico donde se colocará el texto. El parámetro s contiene la cadena de texto.
  • El parámetro fontdict se utiliza para cambiar propiedades como la fuente y el tamaño del texto. Su valor predeterminado es None.
  • El parámetro **kwargs representa otros parámetros que se utilizan para decidir la posición del texto en el gráfico de barras.

En este artículo, usaremos el parámetro ha para decidir la alineación horizontal del texto. Puede obtener más información sobre otros parámetros de la función en la documentación oficial de la función text().

Tracemos ahora un gráfico de barras y luego agreguemos etiquetas de valor. Suponga que tenemos datos del número de estudiantes de una clase en una escuela de las clases 1 a 10 en forma de lista como se muestra a continuación.

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

Aquí, el índice i representa el número de alumnos de la clase i+1. Para trazar los datos, crearemos una lista class_number que contiene números del 1 al 10. Después de eso, trazaremos el gráfico de barras usando la función pyplot.bar(). Luego, agregaremos title, xlabel y ylabel al gráfico usando las funciones title, xlabel e ylabel respectivamente.

Para agregar etiquetas de valor, definiremos una función add_value_label(x_list,y_list). Aquí, lista_x e lista_y son las listas que contienen datos para el eje x y el eje y, es decir, número_clase y no_de_estudiantes.

En la función add_value_label(), especificaremos las coordenadas de las etiquetas de valor como (x, la altura del gráfico de barras en x) para que la etiqueta de valor se agregue a la parte superior del gráfico de barras. El valor de texto pasado a la función de texto será la altura del gráfico de barras en x. Aquí, x serán los elementos de class_number, y la altura del gráfico de barras en x será el número correspondiente de estudiantes en la clase x.

Por ejemplo, agregaremos el número de estudiantes en cada clase como una etiqueta de valor en la parte superior del gráfico de barras.

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()

Producción:

Agregar etiquetas de valor predeterminadas en el gráfico de barras de Matplotlib usando texto

Puede observar que las etiquetas de valor no están en el centro en la parte superior del gráfico de barras en la salida. Podemos hacerlo manipulando los argumentos de entrada como se explica en las siguientes secciones.

Agregue etiquetas de valor en el gráfico de barras de Matplotlib en el centro de cada barra

Para agregar las etiquetas de valor en el gráfico de barras de Matplotlib en el centro en la parte superior del gráfico de barras, especificaremos la alineación horizontal como centro en la función pyplot.text() de la siguiente manera.

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()

Producción:

Centrar etiquetas de valor agregado en el gráfico de barras de Matplotlib usando texto

Agregue etiquetas de valor en el gráfico de barras de Matplotlib en el medio de la altura de cada barra

También puede agregar etiquetas de valor en el medio de la altura de cada barra. Para ello, tenemos que especificar la coordenada y en la función pyplot.text() como (la altura del gráfico de barras en x) / 2. Puede ver esto en el siguiente código de ejemplo.

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()

Producción:

Centro de altura agregue etiquetas de valor en el gráfico de barras de Matplotlib usando texto

Agregue etiquetas de valor en el gráfico de barras de Matplotlib usando la función pyplot.annotate()

En lugar de la función pyplot.text(), podemos usar la función pyplot.annotate() para agregar etiquetas de valor en un gráfico de barras matplotlib. La sintaxis de la función pyplot.annotate() es la siguiente.

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

Aquí,

  • El parámetro text es la etiqueta que se agregará al gráfico.
  • El parámetro xy acepta una tupla (x,y) donde x e y son las coordenadas donde se agregará la etiqueta al gráfico.
  • La función acepta muchos argumentos diferentes. Este artículo solo utilizará el parámetro ha para establecer la alineación horizontal de la etiqueta en el gráfico de barras.

Trazaremos el gráfico de barras usando la función pyplot.bar(). Luego, agregaremos title, xlablel y ylabel al gráfico utilizando las funciones title(), xlabel() e ylabel respectivamente.

Para agregar etiquetas de valor en el gráfico de barras de Matplotlib, definiremos una función add_value_label(x_list,y_list). Aquí, x e y son las listas que contienen datos para el eje x y el eje y. En la función add_value_label(), pasaremos las tuplas creadas a partir de los datos dados para las coordenadas x e y como argumento de entrada al parámetro xy. Con eso, pasaremos otros valores a la función annotate() para agregar etiquetas de valor en el gráfico de barras de Matplotlib de la siguiente manera.

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()

Producción:

Agregar etiquetas de valor predeterminadas en el gráfico de barras de Matplotlib usando Anotar

Nuevamente, puede observar que las etiquetas no están alineadas con el gráfico de barras. Para alinearlos, puede utilizar el parámetro de alineación horizontal ha para establecer la siguiente alineación.

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()

Producción:

Centrar etiquetas de valor agregado en el gráfico de barras de Matplotlib usando Anotar

También puede agregar etiquetas de valor en el medio de la altura de cada barra. Para ello, tenemos que especificar la coordenada y en las tuplas como (la altura del gráfico de barras en x) / 2. Puede ver esto en el siguiente código de ejemplo.

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()

Producción:

Centro de altura agregue etiquetas de valor en el gráfico de barras Matplotlib usando Anotar

Conclusión

Este artículo ha discutido dos formas de agregar etiquetas de valor en un gráfico de barras Matplotlib usando la función text() y la función annotate(). También vimos cómo podíamos decidir la alineación y la posición de las etiquetas cambiando el parámetro. Puede usar cualquiera de las formas discutidas para agregar etiquetas de valor en un gráfico de barras de Matplotlib según su conveniencia.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - Matplotlib Bar Chart