Introducción a Matplotlib – Lección 1

Compartir esta publicación

Introducción

La visualización como herramienta toma parte del análisis proveniente del científico de datos para extraer conclusiones de un conjunto de datos. En el artículo de hoy vamos a pasar por la librería Matplotlib. Matplotlib es una librería de terceros para la visualización de datos. Funciona bien en combinación con NumPy, SciPy y Pandas.

Plot básico, visualización de funciones y visualización de datos

The 2009 data set  ‘Wine Quality Dataset’ elaborated by Cortez et al. available at UCI Machine Learning, is a well-known dataset that contains wine quality information.It includes data about red and white wine physicochemical properties and a quality score. Before we start, we are going to visualize the head a little example dataset:

Sw n2fqqDcSUeBEsTm8hGi7xIdeCNMi2BaNxuH1FcWuWo N8dfG8f1Pgg2hljVj6VaIgjPJ8cKHma VK6UfHapGbA1JFPEDvtuznpLkSB2srRQalpnhINrma1Z5RX3dai65eJ5yi=s0

Plot básico

Matplotlib es una librería que tiene un poder infinito para representar datos de casi cualquier forma posible. Para entender cómo funciona, vamos a empezar con las instrucciones más básicas y poco a poco vamos a aumentar la dificultad.

La forma más útil de comprobar la distribución de los datos es representándola, así que vamos a empezar pintando una serie de puntos. Para ello, podemos utilizar tanto plt.plot como plt.scatter para visualizarlos.

 Lista de distribución de puntos de plot

Import matplotlib as plt 
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 21])

Representación de una lista de puntos mediante la función `plot`:

3Zw iDvjw

Fig 1. Trazado de la lista de puntos utilizando plt.plot y plt.scatter plot. La diferencia entre ambos viene con el control sobre el color, la forma y el tamaño de los puntos. En plt.scatter tienes más control en la apariencia de cada punto.

Import matplotlib as plt 
plt.scatter([1, 2, 3, 4], [1, 4, 9, 16])
plt.axis([0, 6, 0, 21])

Representación de una lista de puntos mediante la función `scatter`:

points = [[1,2,3,4], [1,4,9,16]]
plt.plot(points[0], points[1], 'g^')
plt.plot([x * 2 for x in points[0]], points[1], 'r--')
plt.plot([x * 2.3 for x in points[0]], points[1], 'bs')
plt.axis([0, 15, 0, 21])

Fig. 2. Gráfico de 3 listas de puntos diferentes. La función de gráfico de dispersión permite personalizar la forma de los diferentes puntos

  Migrando proyecto React JS a Next JS

Visualización de funciones

A veces queremos pintar una serie de puntos basándonos en el comportamiento de una determinada función. Para ilustrar este ejemplo vamos a utilizar la función seno(2πx). Como verás, vamos a definir previamente la función por lo que podríamos utilizar cualquier función que creemos, no tiene por qué estar predeterminada.

Representando una función:

Import matplotlib as plt 
Import numpy as np 

def sin(t):
    return np.sin(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)

plt.scatter(t1, sin(t1))

NACcVVytfG xbYnVwwPq7lpyJFdfunbyH4BLGYD2ufOGLue0Lky2C4CJ8iQwGg 8uKeO9wfBhSbZDOl3mPy9JkPmZWG08U63eys3Yt

Fig. 3. Representación de una función con puntos y líneas utilizando las funciones de gráfico de dispersión y gráfico de la biblioteca matplotlib

Ahora haremos la misma representación pero utilizando una línea que pasa por todos estos puntos.

Import matplotlib as plt 
Import numpy as np 
def sin(t):
    return np.sin(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)

plt.plot(t1, sin(t1), 'b')

Visualización de datos

Vamos a empezar con algunas visualizaciones básicas pero muy útiles cuando empezamos a estudiar nuestros datos. Para ello vamos a utilizar el conjunto de datos de vino de calidad comentado anteriormente y vamos a aprender a representar un histograma de datos y una comparación entre dos columnas.

Representación de un histograma de una columna de nuestro conjunto de datos:

df_wine['fixed acidity'].hist(legend=True)

7fek36ruqrRUPodf85nbmCdGKNHI8lrB5apnNDni6V7U5k0jw39tZ2edDmNVHbRx8L7zzWZjaeoJdowlQO VNgyzUniq44XBxpYcnZjGoJE6XqGf 5Me1OKBmimnNXU3lUrFm 1Z=s0

Fig 4

Comparación de dos columnas del conjunto de datos:

plt.figure(figsize=(7, 4))
plt.plot(df_wine['fixed acidity'], df_wine['quality'], 'ro')
plt.xlabel('quality')
plt.ylabel('fixed acidity')

f6RsP93pzrZU0IlhCqOzSWZ7YIMzZlAH MuUjvSf9pkJ pOsouVYfV53rF9BZ8

Fig 5

Representación de un histograma de una columna de nuestro conjunto de datos:

plt.bar(df_wine['quality'], df_wine['fixed acidity'])
plt.xlabel('Quality')
plt.ylabel('Fixed Acidity')

i0jQom FqASZSPXzNZojROwOv9DmMeQ9Rnhelm9mL26CW65Jp8Df4BTmU3P6y

Fig 6

Ahora vamos a subir un poco la dificultad y vamos a entrar en lo que Matplotlib llama Figures.

Matplotlib grafica tus datos en Figures (es decir, ventanas, widgets de Jupyter, etc.), cada una de las cuales puede contener uno o más ejes (es decir, un área donde los puntos pueden especificarse en términos de coordenadas x-y, o theta-r en un gráfico polar, o x-y-z en un gráfico 3D, etc.).

  Automatizando test de Postman con JMeter

La forma más sencilla de crear una figura con un eje es utilizando pyplot.subplots. Luego podemos usar Axes.plot para dibujar algunos datos en los ejes:

IUtl2ZzRmWfXJknISpcniwveVwhFF3NAIu8lKCO4gS8D2gMlGz1f21hzGwb7DSrXhZJqKIqZRuMCrOcMrdB1j5FMCYDUiAnMoqCzupko922bmUv780Pu8AE4ZwUGOx02NcL7sZA =s0

Fig 7

Vamos a empezar creando una figura vacía y vamos a añadirle un título.

Figura vacía con el título «This is an empty figure»:

fig = plt.figure()
fig.suptitle('This is an empty figure', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)
plt.show()

Como puedes ver `fig.add_subplot(111)` son parámetros del grid del subplot codificados como un solo entero.

Por ejemplo, «111» significa «cuadrícula 1×1, 1er subplot» y «234» significa «cuadrícula 2×3, 4to subplot».

La forma alternativa de add_subplot(111) es add_subplot(1, 1, 1)

SNj3Sok5OqkdmteWtOYvsrxmR4PCrqlUpiF2YITKBt2D7VyZrHE 4L2Yp9ILXzkLOuLoBJel7iy wYzmvWuL4nlw1j4zgXQVy5nEoqKTDb 4NtaI6tpV2r1IkImPdgPve9PbVFR8=s0

A continuación escribiremos el nombre de lo que representa cada eje y añadiremos un pequeño cuadro de texto.

Trazar un texto dentro de una caja:

fig = plt.figure()
fig.suptitle('This is an empty figure', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)

ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')

ax.text(0.3, 0.8, 'boxed italics text in data coords', style='italic',
        bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
plt.show()

btZRjtFu3EuawM5QcYGAkcp4bhqITPbxOk5MUyXiD ahhibfEDMo10NfKxFnG8nmNGGUYzwYQ0iYJoYMHMty zOt8AEb9FdDSINNLST9btmRPkKV1GXHh9TYAeZW2YeJsU2cBC3p=s0

Ahora vamos a intentar escribir una anotación seguida de una flecha.

Traza una anotación:

fig = plt.figure()
fig.suptitle('This is an empty figure', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)

ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')

ax.annotate('annotate', xy=(0.2, 0.1), xytext=(0.3, 0.4),
            arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()

Por último, algo muy útil que solemos necesitar es configurar el rango de los ejes para nuestra representación. Para ello vamos a utilizar el atributo axis y pasarle los valores que queramos configurar.

Cambia los rangos de los ejes a x -> [0, 10] y -> [0, 10]:

fig = plt.figure()
fig.suptitle('This is an empty figure', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)

ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')

ax.axis([0, 10, 0, 10])

RCAzoBuNWMcGkzZ2AER0WFWS f9rpgqqIarrJZsaSUzEaT8qrVRSDRJEcSI9JX G9LkmF LPk6QWs8u Nkv4UcJ92pHK0k1HUhBTWmeFI GnF8YY PSiFfvprvN9Hs4UJJX9J9Cd=s0

Entrenando tus habilidades

Si quieres llevar tus habilidades un nivel más allá en Ciencia de Datos, hemos creado un curso que puedes descargar gratuitamente aquí.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Suscríbete a nuestro boletín de noticias

Recibe actualizaciones de los últimos descubrimientos tecnológicos

¿Tienes un proyecto desafiante?

Podemos trabajar juntos

apiumhub software development projects barcelona
Secured By miniOrange