Python en Español

Tutorial Matplotlib (Graficar Gráficos Utilizando pyplot)

Matplotlib es una biblioteca en Python que crea gráficos 2D para visualizar datos. La visualización siempre ayuda a un mejor análisis de los datos y a mejorar la capacidad de toma de decisiones del usuario. En este tutorial de matplotlib, trazaremos algunos gráficos y cambiaremos algunas propiedades como fuentes, etiquetas, rangos, etc.,

Primero, instalaremos matplotlib; luego comenzaremos a trazar algunos gráficos básicos. Antes de eso, veamos algunos de los gráficos que matplotlib puede dibujar.

 

 

Tipos de Gráficos

Hay un número de diferentes tipos de gráficos en matplotlib. Esta sección explica brevemente algunos tipos de gráficos en matplotlib.

Gráfico de Línea

Un gráfico de líneas es una simple línea 2D en el gráfico.

Contorno y Pseudocolor

Podemos representar una matriz bidimensional en color usando la función pcolormesh() aunque las dimensiones estén desigualmente espaciadas. De forma similar, la función contour() hace el mismo trabajo.

Histogramas

Para devolver los recuentos y probabilidades de la caja en forma de histograma, usamos la función hist().

Trayectorias

Para añadir una ruta arbitraria en Matplotlib usamos el módulo matplotlib.path.

Grafico de corrientes

Podemos usar la función streamplot() para trazar las líneas de corriente de un vector. También podemos mapear los colores y el ancho de los diferentes parámetros como la velocidad, el tiempo, etc.

Gráficos de Barras

Podemos usar la función bar() para hacer gráficos de barras con muchas personalizaciones.

Otros Tipos

Algunos otros ejemplos de gráficos en Matplotlib incluyen:

  • Elipses
  • Gráficos de torta
  • Tablas
  • Gráficos de dispersión
  • GUI widgets
  • Curvas rellenas
  • Manejo de fechas
  • Gráficos de registros
  • Leyendas
  • TeX- Notación para objetos de texto
  • Renderización de TeX nativo
  • EEG GUI
  • Bocetos de gráficos estilo XKCD

 

Instalación

Asumiendo que el camino de Python se establece en variables de entorno, solo necesitas utilizar el comando pip para instalar el paquete matplotlib para empezar.

Utiliza el siguiente comando:

$ pip install matplotlib

Instalar matplotlib

Si el paquete no está ya ahí, será descargado e instalado.

Para importar el paquete a su archivo Python, use la siguiente declaración:

import matplotlib.pyplot as plt

Donde matplotlib es la biblioteca, pyplot es un paquete que incluye todas funciones de MATLAB para utilizar las funciones de MATLAB en Python.

Finalmente, podemos usar plt para llamar a las funciones dentro del archivo python.

Línea Vertical

Para trazar una línea vertical con pyplot, puedes usar la función axvline().

La sintaxis de axvline es la siguiente:

plt.axvline(x=0, ymin=0, ymax=1, **kwargs)

En esta sintaxis: x es la coordenada del eje x. Este punto es desde donde la línea se generaría verticalmente. ymin es la parte inferior del gráfico; ymax es la parte superior del gráfico. **kwargs son las propiedades de la línea como el color, la etiqueta, el estilo de línea, etc.

import matplotlib.pyplot as plt

plt.axvline(0.2, 0, 1, label='pyplot vertical line')

plt.legend()

plt.show()

En este ejemplo, dibujamos una línea vertical. 0,2 significa que la línea se dibujará en el punto 0,2 del gráfico. 0 y 1 son ymin y ymax respectivamente.

La etiqueta es una de las propiedades de la línea. legend() es la función MATLAB que permite la etiqueta en el gráfico. Finalmente, show() abrirá la pantalla del gráfico o la gráfica

.

Dibujar línea vertical

Línea Horizontal

La axhline() traza una línea horizontal a lo largo. La sintaxis de axhline() es la siguiente:

En la sintaxis: y son las coordenadas a lo largo del eje y. Estos puntos son desde donde la línea se generaría horizontalmente. xmin es la izquierda del gráfico; xmax es la derecha del gráfico. **kwargs son las propiedades de la línea como el color, la etiqueta, el estilo de línea, etc.

Sustituyendo axvline() por axhline() en el ejemplo anterior y tendrás una línea horizontal en el gráfico:

import matplotlib.pyplot as plt

ypoints = 0.2

plt.axhline(ypoints, 0, 1, label='pyplot horizontal line')

plt.legend()

plt.show()

Dibujar linea horizontal

 

Líneas Múltiples

Para trazar múltiples líneas verticales, podemos crear una matriz de puntos/coordinadas x, y luego iterar a través de cada elemento de la matriz para trazar más de una línea:

import matplotlib.pyplot as plt

xpoints = [0.2, 0.4, 0.6]

for p in xpoints:

    plt.axvline(p,  label='pyplot vertical line')

plt.legend()

plt.show()

La salida será:

Líneas Múltiples

La salida anterior no se ve muy atractiva; podemos usar diferentes colores para cada línea también en el gráfico.

Consideremos el ejemplo siguiente:

import matplotlib.pyplot as plt

xpoints = [0.2, 0.4, 0.6]

colors = ['g', 'c', 'm']

for p, c in zip(xpoints, colors):

    plt.axvline(p,  label='line: {}'.format(p), c=c)

plt.legend()

plt.show()

En este ejemplo, tenemos una serie de líneas y una serie de símbolos de color de Python. Usando la función zip(), ambas matrices se fusionan entre sí: el primer elemento de Ponts[] con el primer elemento de la matriz de color[]. De esta manera, la primera línea = verde, la segunda línea = cian, etc.

Los corchetes {} actúan como un soporte para añadir variables Python a la impresión con la ayuda de la función formato(). Por lo tanto, tenemos Ponts[] en el gráfico.

La salida del código anterior:

Dibuja múltiples líneas con diferentes colores.

Simplemente sustituye la axvline() por axhline() en el ejemplo anterior, y tendrás múltiples líneas horizontales en el gráfico:

import matplotlib.pyplot as plt

ypoints = [0.2, 0.4, 0.6, 0.68]

colors = ['b', 'k', 'y', 'm']

for p, c in zip(ypoints, colors):

    plt.axhline(p,  label='line: {}'.format(p), c=c)

plt.legend()

plt.show()

El código es el mismo; tenemos una matriz de cuatro puntos del eje Y y diferentes colores esta vez. Ambas matrices se fusionan con la función zip(), se itera a través de la última matriz y axhline() traza las líneas como se muestra en la siguiente salida:

Dibuja múltiples líneas horizontales

Guardar la Figura

Después de trazar su gráfico, ¿cómo guardar el gráfico de salida?

Para guardar el gráfico, usa savefig() de pyplot.

plt.savefig(fname, **kwargs)

Donde fname es el nombre del archivo, también se puede especificar el destino o la ruta junto con el nombre del archivo. El parámetro kwargs es opcional. Se puede usar para cambiar la orientación, el formato, el color de la cara, la calidad, el dpi, etc.

import matplotlib.pyplot as plt

ypoints = [0.2, 0.4, 0.6, 0.68]

colors = ['b','k','y', 'm']

for p, c in zip(ypoints, colors):

    plt.axhline(p,  label='line: {}'.format(p), c=c)

plt.savefig('horizontal_lines.png')

plt.legend()

plt.show()

El nombre del archivo es horizontal_lines.png; el archivo estará en el mismo directorio de trabajo:

Exportar figura a imagen

 

Múltiples Gráficos

Todos los ejemplos anteriores trataban sobre el trazado en una sola trama. ¿Y qué hay de trazar múltiples tramas en la misma figura?

Puedes generar múltiples gráficos en la misma figura con la ayuda de la función subplot() de Python pyplot.

matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)

En los argumentos, tenemos tres números enteros para especificar, el número de gráficos en una fila y en una columna, y luego en qué índice debe estar el gráfico. Podemos considerarlo como una cuadrícula, y estamos dibujando en sus celdas.

El primer número sería nws el número de filas; el segundo sería ncols el número de columnas y luego el índice. Otros argumentos opcionales (**kwargs) incluyen, color, etiqueta, título, snap, etc.

Considera el siguiente código para entender mejor cómo trazar más de un gráfico en una figura.

from matplotlib import pyplot as plt

plt.subplot(1, 2, 1)

x1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

y1 = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

plt.plot(x1, y1, color = "c")




plt.subplot(1, 2, 2)

x2 = [40, 50, 60, 70, 80, 90, 100]

y2 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x2, y2, color = "m")

plt.show()

Lo primero es definir la ubicación del gráfico. En la primera subtrama, 1, 2, 1 establece que tenemos 1 fila, 2 columnas, y la gráfica actual se va a trazar en el índice 1. De manera similar, 1, 2, 2 dice que tenemos 1 fila, 2 columnas, pero esta vez el gráfico en el índice 2.

El siguiente paso es crear matrices para graficar puntos enteros en el gráfico. Mira la salida de abajo:

Múltiples Gráficos

Para graficar los gráficos horizontales, cambia los valores de las filas y columnas de la subtrama como:

plt.subplot(2, 1, 1)

plt.subplot(2, 1, 2)

Esto significa que tenemos 2 filas y 1 columna. El resultado será así:

Dibujar diagramas horizontales

Ahora vamos a crear una cuadrícula de 2×2 de gráficos.

Considera el código que se muestra a continuación:

from matplotlib import pyplot as plt

plt.subplot(2, 2, 1)

x1 = [40, 50, 60, 70, 80, 90, 100]

y1 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x1, y1, color = "c")




plt.subplot(2, 2, 2)

x2 = [40, 50, 60, 70, 80, 90, 100]

x2 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x2, y2, color = "m")




plt.subplot(2, 2, 3)

x3 = [40, 50, 60, 70, 80, 90, 100]

y3 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x3, y3, color = "g")




plt.subplot(2, 2, 4)

x4 = [40, 50, 60, 70, 80, 90, 100]

y4 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x4, y4, color = "r")

plt.show()

La salida será:

Dibuja múltiples gráficos horizontales

En este ejemplo, 2,2,1 significa 2 filas, 2 columnas, y el gráfico estará en el índice 1. De manera similar, 2,2,2 significa 2 filas, 2 columnas, y el gráfico estará en el índice 2 de la cuadrícula.

Tamaño de Fuente

Podemos cambiar el tamaño de la fuente de un gráfico con la ayuda de una función llamada rc(). La función rc() se utiliza para personalizar la configuración de rc. Para usar rc() para cambiar el tamaño de la fuente, utilice la siguiente sintaxis:

matplotlib.pyplot.rc('fontname', **font)

O

matplotlib.pyplot.rc('font', size=sizeInt)

La fuente en la sintaxis anterior es un diccionario definido por el usuario que especifica el peso, la familia de fuentes, el tamaño de la fuente, etc. del texto.

plt.rc('font', size=30)

Esto cambiará la fuente a 30; la salida será:

Cambia tamaño de fuente

Rango del Eje

Se puede establecer el rango o límite de los ejes x e y utilizando las funciones xlim() e ylim() de pyplot respectivamente.

matplotlib.pyplot.xlim([starting_point, ending_point])

matplotlib.pyplot.ylim([starting_point, ending_point])

Considera el siguiente ejemplo para establecer el límite del eje x para el gráfico:

from matplotlib import pyplot as plt

x1 = [40, 50, 60, 70, 80, 90, 100]

y1 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x1, y1)

plt.xlim([0,160])

plt.show()

En este ejemplo, los puntos del eje x comenzarán de 0 a 160 de esta manera:

Limite el eje x

De manera similar, para limitar las coordenadas del eje y, pondrás la siguiente línea de código:

plt.ylim([0,160])

La salida será:

Limite el eje y

Etiquetas del Eje

Puedes crear las etiquetas para el eje x y el eje y usando las funciones xlabel() y ylabel() de pyplot.

matplotlib.pyplot.xlabel(labeltext, labelfontdict, **kwargs)

matplotlib.pyplot.ylabel(labeltext, labelfontdict, **kwargs)

En la sintaxis anterior, labeltext es el texto de la etiqueta y es una cadena; labelfont describe el tamaño de la fuente, el peso, la familia del texto de la etiqueta, y es opcional.

from matplotlib import pyplot as plt

x1 = [40, 50, 60, 70, 80, 90, 100]

y1 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x1, y1)

plt.xlabel('Like Geeks X Axis')

plt.ylabel('Like Geeks Y Axis')

plt.show()

En el ejemplo anterior, tenemos matrices regulares x y y para las coordenadas x y y respectivamente. Entonces plt.xlabel() genera un texto para el eje x y plt.ylabel() genera un texto para el eje y.

Cambiar etiqueta de eje

 

Limpiar el grafico

La función clf() del pyplot despeja el grafico.

matplotlib.pyplot.clf()

En la función clf(), no tenemos ningún argumento.

from matplotlib import pyplot as plt

x1 = [40, 50, 60, 70, 80, 90, 100]

y1 = [40, 50, 60, 70, 80, 90, 100]

plt.plot(x1, y1)

plt.xlabel('Like Geeks X Axis')

plt.ylabel('Like Geeks Y Axis')

plt.clf()

plt.show()

En este código, creamos un gráfico y definimos etiquetas también. Después de eso, hemos usado la función clf() para limpiar el grafico de la siguiente manera:

Limpiar el grafico

Espero que encuentres útil el tutorial para empezar con matplotlib.

Sigue volviendo.

Mokhtar Ebrahim
Fundadora de LikeGeeks. Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja una respuesta

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