¡Descarga Matplotlib Pensamiento Computacional y más Apuntes en PDF de Programación Informática solo en Docsity!
Matplotlib
Unidad 6
Apunte de cátedra
Pensamiento computacional (90)
Estructura de este apunte
Este apunte fue armado primero como un Google Colab antes de ser pasado a PDF. Esto significa
que pueden ir al siguiente link y conseguir una versión más interactiva si así prefieren. Es
importante destacar que no van a poder modificar el archivo porque solo tiene permisos de
lectura, deben crear una copia primero. Una vez hecha la copia van a poder cambiar el código y
probar cosas por su cuenta.
¿Qué es Matplotlib?
Matplotlib es probablemente la biblioteca de Python más usada para crear gráficos, también
llamados plots. Provee una forma rápida de graficar datos en varios formatos de alta calidad que
pueden ser compartidos y/o publicados. En esta sección vamos a ver los usos más comunes de
matplotlib. En este video encontrarán una introducción breve a esta sección.
pyplot
pyplot proporciona una interfaz a la biblioteca de matplotlib. Pyplot está diseñada siguiendo el
estilo de Matlab y la mayoría de los comandos para graficar en pyplot tienen análogos en Matlab
con argumentos similares. Explicaremos las instrucciones más importantes con ejemplos
interactivos.
import matplotlib.pyplot as plt
Las primeras funciones que vamos a ver son plot y show.
La función plot
recibe 2 vectores que tienen que ser del mismo tamaño que representan una
serie de puntos en el plano cartesiano. El primer arreglo son las coordenadas X y el segundo son
las coordenadas Y. Finalmente lo que hace la función es unir primero esos elementos para crear
puntos (coordenada a coordenada de los vectores, toma un valor de x
y otro de y
y arma un
punt), y luego unir todos estos puntos con líneas para que en el dibujo podamos ver el gráfico de
la función.
show
simplemente crea la imagen con todos los gráficos definidos anteriormente.
Grafico elemental
x = [0,2,10,11,18,25] y = [0,1,2,3,4,5] fig = plt.figure() plt.plot(x, y)
Pero, ¿cuál debería usar? Bueno, en realidad depende de lo que quieras hacer, por eso a
continuación, vamos a dar un poco de detalle de lo que está ocurriendo en cada línea, para que así
puedas elegir qué es lo mejor para vos:
Por un lado
plt.figure()
Por el otro
plt.subplots()
Si bien no se puede ver un gráfico en ninguno de los outputs, analicemos lo que nos imprime:
1. plt.figure() crea una figura pero sin axes (por eso dice <Figure size 640x480 with 0
Axes> , se tiene una figura y 0 aces).
2. plt.subplots() permite crear ambos (por eso dice <Figure size 640x480 with 1
Axes>, <Axes: >, hay figura y axes).
Note que se ha seguido una convención al nombrarse la figura como fig y los axes como ax.
Grafico elemental explicado:
fig, ax = plt.subplots() # Se crea una figura con un único Axes. ax.plot(x, y) # Agregar los ploteos individuales (gráfico de linea) plt.show() # Mostrar
Entonces, plt.plot() es un método más amigable para principiantes ya que es más conciso
y resulta muy útil cuando simplemente se desea crear un gráfico para verificar resultados
rápidamente.
Ahora, si se desean gráficos más complejos o con un ajuste fino como los que veremos al
final de este apunte, necesitaremos un enfoque más flexible, como plt.subplots().
Partes de una Figura
Esta imagen, fue obtenida de la referencia de matplotlib
(https://matplotlib.org/stable/tutorials/introductory/quick_start.html) y resume de manera
fácil y visual los detalles que podemos agregarle a las figuras creadas. A continuación, vamos
a mostrar cómo lo hacemos, utilizando el gráfico anterior:
● linestyle = estilo de línea, por ejemplo: 'solid', 'dashed', 'dotted' o sus
equivalentes:'-', '--', ':', entre otros.
● markersize, linewidth = con un número, establecemos el tamaño del marcador y el
espesor de la línea.
Notar que si no le asignamos un valor, se establecen los predefinidos.
Para ver las múltiples opciones disponibles, les dejamos el siguiente link de consulta:
https://matplotlib.org/2.1.1/api/_as_gen/matplotlib.pyplot.plot.html
x = [0,2,10,11,18,25] # Tiempo (min) y = [0,1,2,3,4,5] # Distancia (m) fig, ax = plt.subplots() ax.plot(x, y, color='green', marker='^', linestyle='--', markersize=8, linewidth=1.2) plt.show()
Grilla o Cuadrícula
Para leer facilmente cada punto, podemos agregar una cuadrícula usando ax.grid().
Si a esta deseamos modificarla, como por ejemplo, el color, el estilo de línea, o si sólo
deseamos que se vea en uno de los ejes, podemos indicarlo utilizando parámetros muy
similares a los vistos anteriormente pero en la funcion ax.grid().
x = [0,2,10,11,18,25] # Tiempo (min) y = [0,1,2,3,4,5] # Distancia (m) fig, ax = plt.subplots() ax.plot(x, y, color='green', marker='^', linestyle='--', markersize=8, linewidth=1.2)
Grilla preestablecida
ax.grid() plt.show()
Títulos
Una de las partes más importantes para que un gráfico se pueda entender es ponerle un título
y explicar qué significa cada eje.
Eso se hace con las funciones ax.set_xlabel(), ax.set_ylabel() y ax.set_title().
Cada una recibe un string que se usará como etiqueta del eje X, etiqueta del eje Y o título,
respectivamente.
Siendo los valores de x se trataba del tiempo medido en minutos y los de y de una distancia
en metros, entonces:
x = [0,2,10,11,18,25] # Tiempo (min) y = [0,1,2,3,4,5] # Distancia (m) fig, ax = plt.subplots() ax.plot(x, y, color='green', marker='^', linestyle='--', markersize=8, linewidth=1.2)
Mostrar el título del gráfico
ax.set_title("Gráfico de posición")
Mostrar el título de los ejes
ax.set_xlabel('Tiempo (min)') ax.set_ylabel('Distancia (m)')
Grilla preestablecida
ax.grid() plt.show()
ax.set_xlabel('Tiempo (min)') ax.set_ylabel('Distancia (m)')
Agregar la refencia
ax.legend()
Grilla preestablecida
ax.grid() plt.show() Características de los Ejes
Como podemos identificar en los gráficos anteriores, python decidió las características de los
ejes:
● El eje x: se extiende del 0 a 25, de 5 en 5.
● El eje y: se extiende del 0 a 5, de 1 en 1.
Podemos establecer los limites del eje x e y usando ax.set_xlim() y ax.set_ylim()
respectivamente.
x = [0,2,10,11,18,25] # Tiempo (min) y = [0,1,2,3,4,5] # Distancia (m) fig, ax = plt.subplots() ax.plot(x, y, label='Objeto 1', color='green', marker='^', linestyle='--', markersize=8, linewidth=1.2)
Mostrar el título del gráfico
ax.set_title("Gráfico de posición")
Mostrar el título de los ejes
ax.set_xlabel('Tiempo (min)') ax.set_ylabel('Distancia (m)')
Establecer los límites de los ejes
ax.set_xlim(0, 30) ax.set_ylim(0, 6)
Agregar la refencia
ax.legend()
Grilla preestablecida
ax.grid() plt.show()
y = [0,1,2,3,4,5] fig, ax = plt.subplots() ax.plot(x, y) plt.show() Gráfico de Dispersión o Puntos
El gráfico de dispersión o puntos permite visualizar la relación entre las variables. Para
crearlo, se utiliza la función ax.scatter():
x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] fig, ax = plt.subplots()
ax.scatter(x, y) plt.show() Gráfico de Barras
El gráfico de barras permite visualizar proporciones, comparando dos o más valores entre sí.
Para crearlo, se utiliza la función ax.bar(), la cual primero recibe un arreglo con las etiquetas
de las barras que se van a mostrar y después otro arreglo con la altura de cada una de estas
barras.
peso = [340, 115, 200, 200, 270] ingredientes = ['chocolate', 'manteca', 'azúcar', 'huevo', 'harina'] fig, ax = plt.subplots() ax.bar(ingredientes, peso)