Si quieren iterar a través de todos los axes podrían utilizar algo como esto y también les recomiendo utilizar los notebooks de VS Code para aprovechar la potencial del editor en auto completado y todo lo demás a no ser que necesiten una GPU o TPU que te brinda Google Colab.
Es posible que nuestras gráficas puedan contener ecuaciones matemáticas y otras configuraciones si se aplica el renderizado utilizando Tex. Para esto es necesario tener instalado Tex y las dependencias necesarias. Acá dejo un link donde explican la instalación y el uso de estas:
Tratando de practicar un poco el OO Interface, he encontrado un Dataset de COVID-19 a nivel mundial y lo he enfocado en LATAM.
Aquí está el notebook en Deepnote.
Aquí un ejemplo de dos gráficas de series de tiempo sobre un mismo lienzo. Se muestra la Precipitación Promedio Mensual en un periodo de 10 años para Seattle y Austin. Lo interesante de este ejemplo, en el contexto de la clase, es la personalización de los ejes y del título, mediante los métodos .set_xlabel(), .set_ylabel() y .set_title() del objeto ax.
.
.
# Use the set_xlabel method to add the label: "Time (months)"
# Use the set_ylabel method to add the label: "Precipitation (inches)"
# Use the set_title method to add the title: "Weather patterns in Austin and Seattle"
fig, ax = plt.subplots()
ax.plot(seattle_weather['DATE'].unique(), seattle_weather.groupby('DATE')['MLY-PRCP-NORMAL'].mean(), color='b', marker='o', linestyle='--')
ax.plot(austin_weather['DATE'].unique(), austin_weather.groupby('DATE')['MLY-PRCP-NORMAL'].mean(), color='r', marker='v', linestyle='--')
ax.set_xticks(seattle_weather['DATE'].unique())
ax.set_xticklabels(MONTH)
ax.set_xlabel('Time (months)')
ax.set_ylabel('Precipitation (inches)')
ax.set_title('Weather patterns in Austin and Seattle')
plt.show()
Leyendas, etiquetas, títulos, tamaño
Para dar contexto a nuestros gráficos necesitamos usar títulos, leyendas, tamaño o etiquetas, para que nuestra gráfica tenga un contexto más amplio.
Cómo dar contexto a los gráficos Creamos nuestras gráficas comunes
________________________________________
[10]0
import matplotlib.pyplot as plt
import numpy as np
________________________________________
[11]0
X = np.linspace(0,12,26)
y = np.sin(X)
________________________________________
[12]0
fig, axes = plt.subplots(1,2)
axes[0].plot(X,y, "y")
axes[1].plot(y,X, "g")
plt.show()
#como podemos dellar en la imagen no podemos identificar los ejes, ni que informacion nos
#quiren decir, no sabemos que estamos representando
________________________________________
[13]0
fig, axes = plt.subplots(1,2,figsize=(10,5))
axes[0].plot(X,y, "y",label="$sin(x)$")
axes[0].set_title("relacion x - y")
axes[0].set_xlabel("x")
axes[0].set_ylabel("y")
axes[0].legend()
axes[1].plot(y,X, "g")
axes[1].set_title("relacion y -x")
axes[1].set_xlabel("y")
axes[1].set_ylabel("x")
plt.show()
#con esta funcion(set), podemos agregar titulo a nuestras figuras y nutras vissualizaciones
#ya van tomando forma y contexto
#con (xlabel) podemos y que me representan los ejes
#con figsize puedo cambiar le tamaño de mi figuran, a las dimenciones que yo decee
#con la funcion (lengend), puedo mostrar la leyenda definiendo los lebel en la grafica
#tambien podemos definirlo como uana notacion matematica con la funcion($)
#con todod este codigo y funciones puedo poner mucho mas contexto a la hora de trabajar
#con las graficas
________________________________________
[31]0
from matplotlib.transforms import Bbox
plt.plot(X,y,label="sin(x)")
plt.title("este es el titulo")
plt.xlabel("x")
plt.ylabel("y")
#plt.legend(loc="lower right")
#plt.legend(loc="lower left")
plt.legend(loc="lower left", bbox_to_anchor=(1,0.1,))
#queremos ubicar la leyenda lo hacemos con la funcion (lower Y donde lo queremos )
#y si lo dejamos por defeto el lo hubicara donde mejor combenga
________________________________________
en esta clase vimos la importancia de los títulos, de los label y la importancia de darle más contexto a nuestras gráficas, esto es muy importante ya que son graficas que enseñan los resultados a miles de personas y con todo esto de la contextualización se verán mucho mejor tus gráficos
fig,axes=plt.subplots(2,4)axes\[0,0].plot(x,np.cos(x),'r')axes\[0,1].plot(x,np.sin(x),'g')axes\[0,2].plot(x,np.tan(x),'b')axes\[0,3].plot(x,1/np.tanh(x),'y')i=1for j in range (0,4): axes\[i,j].plot(x,j/np.cos(x))
\#tigg.layout para ajustar los margenes y dejarlos como modelo generalfig.tight\_layout()
Ja, este man va es corriendo con todo eso.
debio haber organizado los temas como antes hacia.
son propiedades muy importantes asi que debió haber separado las tematicas.
por ejemplo:
“Si quieres poner titulos en la grafica debes hacer esto bla bla bla”. listo procede y deja un apartado y continua con la idea pero con otra propiedad ya sea tamaño o leyendas.
fig, axes = plt.subplots(1,2, figsize=(10, 5))
# figsize = (largo, alto)
axes[0].set_title('Relacion X y Y')
axes[0].plot(x, y, label='$sin(x)$')
axes[0].set_xlabel('X')
axes[0].set_ylabel('Y')
axes[0].legend()
axes[1].set_title('Relacion Y y X')
axes[1].plot(y, x)
axes[1].set_xlabel('Y')
axes[1].set_ylabel('X')
Modo normal jeje:
plt.plot(x, y, label= 'sin(x)')
plt.title('Este es mi título')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='lower left', bbox_to_anchor=(1, 0.85))
plt.show()
En caso de que no tuvieramos la relación de X - Y / Y - X, sino que por el contrario las gráficas compartan el mismo eje, podemos evitarnos unas líneas de código creando un for para ponerle los ejes compartidos, solo creados un loop variable y le indicamos el iterable que en este caso sería el objeto axes.
Modificar la localización de la etiqueta, con el metodo Pyplot Básico
# Codigo Pyplot basico
plt.plot(x,y, label="sin(x+2)")
#Opciones de edicion:
plt.title("Este es un titulo-PRUEBA2")
plt.xlabel("Prueba de linspace(0,5,20)")
plt.ylabel("Prueba del eje Y =np.sin(x+2)")
plt.legend(loc="lower right", bbox_to_anchor=(0.9,0.7))
# bbox_to_anchor=(1,0.9) define el tamaño del Label.
plt.show()
Conocer un poco más de Python (Bucles), en combinación con esta clase te permite hacer graficas interesantes, vean por ejemplo como crece una exponencial …(a medida que aumenta el exponente)
# Hoja de Estilo
plt.style.use('seaborn-poster')
# Declarando Filas, y Columnas
nrow = 3
ncol = 3
x = np.linspace(0,20,100)
y = np.linspace(1,1,100)
exp = 1fix, axes = plt.subplots(nrow,ncol, figsize=(15,10), constrained_layout = True)
forrowinrange(nrow):
forcolinrange(ncol):
y = y*x
axes[row,col].plot(x,y, label=f'$x^{exp}$')
axes[row,col].set_title('Grafica Exponencial')
axes[row,col].set_xlabel('x')
axes[row,col].set_ylabel(f'x^{exp}')
axes[row,col].legend()
axes[row,col].set(xlim=(0, 5), xticks=np.arange(1, 5),
ylim=(0, 201), yticks=np.arange(0,201,25))
exp = exp + 1
fig.tight_layout()
Me gusta más hacerlo con POO. Siento que el trabajo queda más personalizado y profesional. Me parece que de esa manera estamos trabajando mejor sobre cada punto.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?