Tutorial de matplotlib

Matplotlib es fácil de usar y una increíble biblioteca de visualización en Python. Se basa en arrays NumPy y está diseñado para funcionar con la pila SciPy más amplia y consta de varios gráficos como línea, barra, dispersión, histograma, etc. 

 

En este artículo, aprenderemos sobre el trazado de Python con Matplotlib desde lo básico para avanzar con la ayuda de un gran conjunto de datos que contiene información sobre diferentes tipos de gráficos y sus personalizaciones.

Tabla de contenidos

Artículos recientes en Matplotlib !!!

Empezando

Antes de comenzar a aprender sobre Matplotlib, primero debemos configurar el entorno y también veremos cómo usar Matplotlib con Jupyter Notebook:

Después de aprender sobre la configuración del entorno y cómo usar Matplotlib con Jupyter, creemos un diagrama simple . Trazaremos dos listas que contienen las coordenadas X, Y para la trama.

Ejemplo:

Python3

import matplotlib.pyplot as plt
 
# initializing the data
x = [10, 20, 30, 40]
y = [20, 30, 40, 50]
 
# plotting the data
plt.plot(x, y)
 
# Adding the title
plt.title("Simple Plot")
 
# Adding the labels
plt.ylabel("y-axis")
plt.xlabel("x-axis")
plt.show()

Producción:

 

En el ejemplo anterior, los elementos de X e Y proporcionan las coordenadas para el eje x y el eje y , y se traza una línea recta contra esas coordenadas. Para obtener una introducción detallada a Matplotlib y ver cómo se trazan los gráficos básicos, consulte el siguiente artículo.

En el artículo anterior, es posible que haya visto que Pyplot se importó en el código y debe haberse preguntado qué es Pyplot. No se preocupe, discutiremos el Pyplot en la siguiente sección.

Pyplot

Pyplot es un módulo de Matplotlib que proporciona una interfaz similar a MATLAB. Pyplot proporciona funciones que interactúan con la figura, es decir, crea una figura, decora el gráfico con etiquetas y crea un área de trazado en una figura.

Sintaxis:

matplotlib.pyplot.plot(*argumentos, scalex=Verdadero, scaley=Verdadero, datos=Ninguno, **kwargs)

Ejemplo:

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.axis([0, 6, 0, 20])
plt.show()

Producción:

 

Consulte los artículos a continuación para obtener información detallada sobre Pyplot y las funciones asociadas con esta clase.

>>> Más funciones en la clase Pyplot

Matplotlib se encarga de la creación de valores predeterminados incorporados como Figura y Ejes. No se preocupe por estos términos, los estudiaremos en detalle en la siguiente sección, pero analicemos brevemente estos términos.

  • Figura: Esta clase es el contenedor de nivel superior para todos los gráficos, lo que significa que es la ventana o página general en la que se dibuja todo. Un objeto de figura se puede considerar como un contenedor en forma de caja que puede contener uno o más ejes.
  • Ejes: esta clase es el componente más básico y flexible para crear subparcelas. Puede confundir ejes con el plural de eje, pero es un diagrama o gráfico individual. Una figura dada puede contener muchos ejes, pero los ejes dados solo pueden estar en una figura.

Clase de figura

La clase de figura es el contenedor de nivel superior que contiene uno o más ejes. Es la ventana o página general en la que se dibuja todo.

Sintaxis:

class matplotlib.figure.Figure(figsize=Ninguno, dpi=Ninguno, facecolor=Ninguno, edgecolor=Ninguno, linewidth=0.0, frameon=Ninguno, subplotpars=Ninguno, tight_layout=Ninguno, constrained_layout=Ninguno)

Ejemplo 1:

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
 
# Creating a new figure with width = 5 inches
# and height = 4 inches
fig = plt.figure(figsize =(5, 4))
 
# Creating a new axes for the figure
ax = fig.add_axes([1, 1, 1, 1])
 
# Adding the data to be plotted
ax.plot([2, 3, 4, 5, 5, 6, 6],
        [5, 7, 1, 3, 4, 6 ,8])
plt.show()

Producción:

 

Ejemplo 2: Creación de varias parcelas

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
 
# Creating a new figure with width = 5 inches
# and height = 4 inches
fig = plt.figure(figsize =(5, 4))
 
# Creating first axes for the figure
ax1 = fig.add_axes([1, 1, 1, 1])
 
# Creating second axes for the figure
ax2 = fig.add_axes([1, 0.5, 0.5, 0.5])
 
# Adding the data to be plotted
ax1.plot([2, 3, 4, 5, 5, 6, 6],
         [5, 7, 1, 3, 4, 6 ,8])
ax2.plot([1, 2, 3, 4, 5],
         [2, 3, 4, 5, 6])
 
plt.show()

Producción:

 

Consulte los artículos a continuación para obtener información detallada sobre la clase Figure y las funciones asociadas con ella.

>>> Más funciones en la clase de figura

Clase de ejes

La clase Axes es la unidad más básica y flexible para crear subparcelas. Una figura dada puede contener muchos ejes, pero un eje dado solo puede estar presente en una figura. La función axes() crea el objeto de ejes. Veamos el siguiente ejemplo.

Sintaxis:

matplotlib.pyplot.axis(*args, emit=True, **kwargs)

Ejemplo 1: 

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
# Creating the axes object with argument as
# [left, bottom, width, height]
ax = plt.axes([1, 1, 1, 1])

Producción:

 

Ejemplo 2:

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
fig = plt.figure(figsize = (5, 4))
 
# Adding the axes to the figure
ax = fig.add_axes([1, 1, 1, 1])
 
# plotting 1st dataset to the figure
ax1 = ax.plot([1, 2, 3, 4], [1, 2, 3, 4])
 
# plotting 2nd dataset to the figure
ax2 = ax.plot([1, 2, 3, 4], [2, 3, 4, 5])
plt.show()

Producción:

 

Consulte los artículos a continuación para obtener información detallada sobre la clase de ejes y las funciones asociadas con ella.

>>> Más funciones en la clase Axes

Establecimiento de límites y etiquetas de ticks

Es posible que haya visto que Matplotlib establece automáticamente los valores y los marcadores (puntos) de los ejes x e y, sin embargo, es posible establecer el límite y los marcadores manualmente. Las funciones set_xlim() y set_ylim() se utilizan para establecer los límites del eje x y el eje y respectivamente. De manera similar, las funciones set_xticklabels() y set_yticklabels() se utilizan para establecer etiquetas de marca.

Ejemplo:

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
x = [3, 1, 3]
y = [3, 2, 1]
 
# Creating a new figure with width = 5 inches
# and height = 4 inches
fig = plt.figure(figsize =(5, 4))
 
# Creating first axes for the figure
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
 
# Adding the data to be plotted
ax.plot(x, y)
ax.set_xlim(1, 2)
ax.set_xticklabels((
  "one", "two", "three", "four", "five", "six"))
plt.show()

Producción:

 

Múltiples Parcelas

Hasta ahora, debe tener una idea básica sobre Matplotlib y trazar algunos gráficos simples, ahora, ¿qué sucede si desea trazar múltiples gráficos en la misma figura? Esto se puede hacer de varias maneras. Una forma se discutió anteriormente usando el método add_axes() de la clase figure. Veamos varias formas en que se pueden agregar varias parcelas con la ayuda de ejemplos.

Método 1: Usar el método  add_axes()

El módulo de figura del método add_axes() de la biblioteca matplotlib se usa para agregar un eje a la figura.

Sintaxis:

add_axes(self, *args, **kwargs)

Ejemplo:

Python3

# Python program to show pyplot module
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
 
# Creating a new figure with width = 5 inches
# and height = 4 inches
fig = plt.figure(figsize =(5, 4))
 
# Creating first axes for the figure
ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
 
# Creating second axes for the figure
ax2 = fig.add_axes([0.5, 0.5, 0.3, 0.3])
 
# Adding the data to be plotted
ax1.plot([5, 4, 3, 2, 1], [2, 3, 4, 5, 6])
ax2.plot([1, 2, 3, 4, 5], [2, 3, 4, 5, 6])
plt.show()

Producción:

 

El método add_axes() agrega el gráfico en la misma figura creando otro objeto de ejes.

Método 2: Usar el método subplot()

Este método agrega otro gráfico a la figura actual en la posición de cuadrícula especificada.

Sintaxis:

subtrama(nrows, ncols, index, **kwargs)

subtrama(pos, **kwargs) 

trama secundaria (hacha)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [3, 1, 3]
y = [3, 2, 1]
z = [1, 3, 1]
 
# Creating figure object
plt.figure()
 
# addind first subplot
plt.subplot(121)
plt.plot(x, y)
 
# addding second subplot
plt.subplot(122)
plt.plot(z, y)

Producción:

 

Nota: la función Subplot() tiene las siguientes desventajas: 

  • No permite agregar varias subparcelas al mismo tiempo.
  • Elimina la trama preexistente de la figura.

Método 3: Usar el método subplots()

Esta función se utiliza para crear figuras y varias subtramas al mismo tiempo.

Sintaxis:

matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=Ninguno, gridspec_kw=Ninguno, **fig_kw)

Ejemplo:

Python3

import matplotlib.pyplot as plt
 
# Creating the figure and subplots
# according the argument passed
fig, axes = plt.subplots(1, 2)
 
# plotting the data in the 1st subplot
axes[0].plot([1, 2, 3, 4], [1, 2, 3, 4])
 
# plotting the data in the 1st subplot only
axes[0].plot([1, 2, 3, 4], [4, 3, 2, 1])
 
# plotting the data in the 2nd subplot only
axes[1].plot([1, 2, 3, 4], [1, 1, 1, 1])

Producción:

 

Método 4: Usar el método subplot2grid()

Esta función brinda flexibilidad adicional en la creación de objetos de ejes en una ubicación específica dentro de una cuadrícula. También ayuda a expandir el objeto de ejes en varias filas o columnas. En palabras más simples, esta función se usa para crear múltiples gráficos dentro de la misma figura.

Sintaxis:

Plt.subplot2grid(forma, ubicación, rango de filas, rango de columnas)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [3, 1, 3]
y = [3, 2, 1]
z = [1, 3, 1]
 
# adding the subplots
axes1 = plt.subplot2grid (
  (7, 1), (0, 0), rowspan = 2,  colspan = 1)
axes2 = plt.subplot2grid (
  (7, 1), (2, 0), rowspan = 2, colspan = 1)
axes3 = plt.subplot2grid (
  (7, 1), (4, 0), rowspan = 2, colspan = 1)
 
# plotting the data
axes1.plot(x, y)
axes2.plot(x, z)
axes3.plot(z, y)

Producción:

 

Consulte los artículos a continuación para obtener información detallada sobre las tramas secundarias.

¿Qué es una leyenda?

Una leyenda es un área que describe los elementos del gráfico. En términos simples, refleja los datos que se muestran en el eje Y del gráfico. Generalmente aparece como el cuadro que contiene una pequeña muestra de cada color en el gráfico y una pequeña descripción de lo que significan estos datos.

Creando la Leyenda

Se puede crear una Leyenda usando el método legend() . El atributo Loc en la leyenda() se usa para especificar la ubicación de la leyenda. El valor predeterminado de loc es loc=”mejor” (arriba a la izquierda). Las strings ‘superior izquierda’, ‘superior derecha’, ‘inferior izquierda’, ‘inferior derecha’ colocan la leyenda en la esquina correspondiente de los ejes/figura.

El atributo bbox_to_anchor=(x, y) de la función legend() se usa para especificar las coordenadas de la leyenda, y el atributo ncol representa el número de columnas que tiene la leyenda. Su valor por defecto es 1.

Sintaxis:

matplotlib.pyplot.legend([“azul”, “verde”], bbox_to_anchor=(0.75, 1.15), ncol=2)

Ejemplo:

Python3

import matplotlib.pyplot as plt
 
# data to display on plots
x = [3, 1, 3]
y = [3, 2, 1]
plt.plot(x, y)
plt.plot(y, x)
 
# Adding the legends
plt.legend(["blue", "orange"])
plt.show()

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre la leyenda: 

Creación de diferentes tipos de parcelas

Gráfico de líneas

Hasta ahora, todos deben haber visto que estamos trabajando solo con los gráficos de líneas , ya que son fáciles de trazar y comprender. El gráfico de líneas se utiliza para representar una relación entre dos datos X e Y en un eje diferente. Se grafica usando la función pot(). Veamos el siguiente ejemplo

Ejemplo:
 

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [3, 1, 3]
y = [3, 2, 1]
 
# This will plot a simple line chart
# with elements of x as x axis and y
# as y axis
plt.plot(x, y)
plt.title("Line Chart")
 
# Adding the legends
plt.legend(["Line"])
plt.show()

Producción:

 

Consulte el siguiente artículo para obtener información detallada sobre el gráfico de líneas.

Gráfico de barras

Un diagrama de barras o diagrama de barras es un gráfico que representa la categoría de datos con barras rectangulares con longitudes y alturas proporcionales a los valores que representan. Los gráficos de barras se pueden trazar horizontal o verticalmente. Un gráfico de barras describe las comparaciones entre las categorías discretas. Se puede crear usando el método bar() .

Sintaxis:

plt.bar(x, alto, ancho, fondo, alinear)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [3, 1, 3, 12, 2, 4, 4]
y = [3, 2, 1, 4, 5, 6, 7]
 
# This will plot a simple bar chart
plt.bar(x, y)
 
# Title to the plot
plt.title("Bar Chart")
 
# Adding the legends
plt.legend(["bar"])
plt.show()

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre los gráficos de barras:

Histogramas

Un histograma se usa básicamente para representar datos en forma de algunos grupos. Es un tipo de gráfico de barras en el que el eje X representa los rangos de contenedores, mientras que el eje Y brinda información sobre la frecuencia. Para crear un histograma, el primer paso es crear un contenedor de rangos, luego distribuir todo el rango de valores en una serie de intervalos y contar los valores que caen en cada uno de los intervalos. Los contenedores se identifican claramente como intervalos de variables consecutivos que no se superponen. La función hist() se usa para calcular y crear un histograma de x.

Sintaxis:

matplotlib.pyplot.hist(x, contenedores=Ninguno, rango=Ninguno, densidad=Falso, pesos=Ninguno, acumulativo=Falso, fondo=Ninguno, histtype=’barra’, alineación=’media’, orientación=’vertical’, rwidth=Ninguno, log=Falso, color=Ninguno, label=Ninguno, stacked=False, \*, data=Ninguno, \*\*kwargs)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [1, 2, 3, 4, 5, 6, 7, 4]
# This will plot a simple histogram
plt.hist(x, bins = [1, 2, 3, 4, 5, 6, 7])
# Title to the plot
plt.title("Histogram")
# Adding the legends
plt.legend(["bar"])
plt.show()

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre los histogramas.

Gráfico de dispersión

Los diagramas de dispersión se utilizan para observar la relación entre las variables y utilizan puntos para representar la relación entre ellas. El método scatter() en la biblioteca matplotlib se usa para dibujar un diagrama de dispersión.

Sintaxis:

matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=Ninguno, c=Ninguno, marker=Ninguno, cmap=Ninguno, vmin=Ninguno, vmax=Ninguno, alpha=Ninguno, linewidths=Ninguno, edgecolors=Ninguno)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [3, 1, 3, 12, 2, 4, 4]
y = [3, 2, 1, 4, 5, 6, 7]
 
# This will plot a simple scatter chart
plt.scatter(x, y)
 
# Adding legend to the plot
plt.legend("A")
 
# Title to the plot
plt.title("Scatter chart")
plt.show()

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre el diagrama de dispersión.

Gráfico circular

Un gráfico circular es un diagrama estadístico circular que puede mostrar solo una serie de datos. El área del gráfico es el porcentaje total de los datos dados. El área de rebanadas del pastel representa el porcentaje de las partes de los datos. Las rebanadas de pastel se llaman cuñas. El área de la cuña está determinada por la longitud del arco de la cuña. Se puede crear utilizando el método pie().

Sintaxis:

matplotlib.pyplot.pie(datos, explotar=Ninguno, etiquetas=Ninguno, colores=Ninguno, autopct=Ninguno, sombra=Falso)

Ejemplo:

Python3

import matplotlib.pyplot as plt
# data to display on plots
x = [1, 2, 3, 4]
 
# this will explode the 1st wedge
# i.e. will separate the 1st wedge
# from the chart
e  =(0.1, 0, 0, 0)
 
# This will plot a simple pie chart
plt.pie(x, explode = e)
 
# Title to the plot
plt.title("Pie chart")
plt.show()

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre los gráficos circulares.

Gráficos 3D 

Matplotlib se introdujo teniendo en cuenta, solo el trazado bidimensional. Pero en el momento en que se produjo el lanzamiento de 1.0, las utilidades 3D se desarrollaron sobre 2D y, por lo tanto, tenemos una implementación 3D de datos disponible en la actualidad.

Ejemplo:

Python3

import matplotlib.pyplot as plt
# Creating the figure object
fig = plt.figure()
 
# keeping the projection = 3d
# ctreates the 3d plot
ax = plt.axes(projection = '3d')

Producción:

 

El código anterior permite la creación de un gráfico 3D en Matplotlib. Podemos crear diferentes tipos de gráficos en 3D, como gráficos de dispersión, gráficos de contorno, gráficos de superficie, etc. Vamos a crear un gráfico de líneas en 3D simple.

Ejemplo:

Python3

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
z = [1, 8, 27, 64, 125]
# Creating the figure object
fig = plt.figure()
# keeping the projection = 3d
# ctreates the 3d plot
ax = plt.axes(projection = '3d')
ax.plot3D(z, y, x)

Producción:

 

Consulte los siguientes artículos para obtener información detallada sobre gráficos 3D.

Trabajar con imágenes

El módulo de imagen en la biblioteca matplotlib se usa para trabajar con imágenes en Python. El módulo de imagen también incluye dos métodos útiles que son imread , que se usa para leer imágenes e imshow , que se usa para mostrar la imagen.

Ejemplo:

Python3

# importing required libraries
import matplotlib.pyplot as plt
import matplotlib.image as img
# reading the image
testImage = img.imread('g4g.png')
# displaying the image
plt.imshow(testImage)

Producción:

 

Consulte los artículos a continuación para obtener información detallada sobre cómo trabajar con imágenes usando Matplotlib.

Personalización de parcelas en Matplotlib

Más artículos sobre Matplotlib

Ejercicios, Aplicaciones y Proyectos

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *