Visualización de datos con Python
La importancia de la visualización de datos
Matplotlib
Pyplot básico
Subplot
Método orientado a objetos
Subplots
Leyendas, etiquetas, títulos, tamaño
Colores y estilos
Bar Plot
Crear otro tipo de gráficas
Quiz: Matplotlib
Seaborn
Seaborn
Set
Parámetros más usados con Seaborn
Distribuciones
Categóricos
Relation
Jointplot y Pairplot
Heatmap
Quiz: Seaborn
Cierre del curso
Posibilidades con Matplotlib y Seaborn
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Con subplots se puede trabajar en un arreglo de gráficas a las cuales se accede a través de los índices.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x**2
fig, axes = plt.subplots()
axes.plot(x,y)
plt.show()
![1.JPG]()
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,'b')
axes[1].plot(y,x,'r')
plt.show()
![1.JPG]()
fig, (axes1,axes2) = plt.subplots(nrows=1, ncols=2)
axes1.plot(x,y,'b')
axes2.plot(y,x,'r')
plt.show()
fig, axes = plt.subplots(2,4)
#genera un trazo accediendo a las graficas a traves del indice de la matriz
axes[0,0].plot(x,y)
axes[0,1].plot(y,x, 'r')
fig.tight_layout() #mejora la visualización de los ejes de cada gráfico
![4.JPG]()
fig, ((axes1, axes2, axes3, axes4), (axes5, axes6, axes7, axes8)) = plt.subplots(2,4)
axes1.plot(x, np.sin(x), 'b')
axes2.plot(y, np.cos(x), 'purple')
axes3.plot(x, np.tan(y), 'orange')
axes4.plot(y, np.cos(y)**2,'black')
#mejorar la visualización de las figuras
fig.tight_layout()
![5.JPG]()
Grafica la segunda línea de los subplots anteriormente mencionados. Usa el estilo de tu preferencia y compártenos el resultado en la sección de comentarios.
Aportes 148
Preguntas 4
Mi reto cumplido …!
Con subplots se puede trabajar en un arreglo de graficas a las cuales se accede a traves de los indices.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x**2
fig, axes = plt.subplots()
axes.plot(x,y,'b')
plt.show()
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,'b')
axes[1].plot(y,x,'r')
plt.show()
fig, (axes1,axes2) = plt.subplots(nrows=1, ncols=2)
axes1.plot(x,y,'b')
axes2.plot(y,x,'r')
plt.show()
fig, axes = plt.subplots(2,4)
#genera un trazo accediendo a las graficas a traves del indice de la matriz
axes[1,0].plot(x,np.cos(x))
axes[1,1].plot(x,np.sin(x), 'r')
axes[1,2].plot(x,np.tan(x), 'green')
axes[1,3].plot(x,np.cos(x)**2)
fig.tight_layout() #mejora la visualizacion de los ejes de cada grafico
fig, ((axes1, axes2, axes3, axes4), (axes5, axes6, axes7, axes8)) = plt.subplots(2,4)
axes5.plot(x,np.cos(x))
axes6.plot(x,np.sin(x), 'r')
axes7.plot(x,np.tan(x), 'green')
axes8.plot(x,np.cos(x)**2)
#mejorar la visualizacion de las figuras
fig.tight_layout()
Reto Completado
Para los que quieran cambiar el tamaño del lienzo:
plt.rcParams["figure.figsize"] = (10, 7)
Mi reto:
hola a todos
mi reto:
Para lograr un buen análisis de datos es buena idea observar tu dataset y así entenderlo mejor. En este ejemplo trabajé con el dataset digits de scikit learn, que nos ayuda a manera de práctica para predecir números escritos a mano.
En la row [28] empecé definiendo mi figura con subplots de 4 filas y 6 columnas.
Con el ciclo for se van “llenando” esta figura con los datos del dataset digits.
La función zip crea una nueva lista de tuplas con los elementos de los iterables que se le pongan, en este caso
axes.ravel()
digits.images (las imagenes de los numeros en el dataset)
digits.target (etiquetas de los datos)
Es decir, toma el primer axes de la figura y la primera imagen con su etiqueta.
Al definir los ticks con una lista vacía estas ya no aparecen y se ve menos amontonado.
El tile de cada axes es la etiqueta que tiene cada imagen.
Le quisiera dar like a la clase jajajaja
Reto
Le agregué más puntos de muestreo para una gráfica más suave
import matplotlib.pyplot as plt
import numpy as np
x =np.linspace(0.1,11,100)
y = np.sin(x)
fig ,((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x),'y')
ax3.plot(x,np.tan(x),'r')
ax4.plot(x,np.cos(x)/x,'m')
#Reto:
ax5.plot(x,np.sinh(x))
ax6.plot(x,np.arcsinh(x),'y:')
ax7.plot(x,np.cosh(x),'r--')
ax8.plot(x,1/np.tanh(x),'m:')
fig.tight_layout()
plt.show()
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4) # Tuple by row !
ax1.plot(x, np.cos(x))
ax2.plot(x, np.sin(x,y),'y')
ax3.plot(x, np.tan(x,y),'r')
ax4.plot(x, np.abs(x) * 5 * np.sin(10 * x), 'r')
ax5.plot(x, np.log(x + 1))
ax6.plot(x, np.exp(x) * (np.cos(x) ** 2),'r')
ax7.plot(x, np.sin(x) + np.cos(2*x))
ax8.plot(x, np.cos(x) ** 2)
fig.tight_layout()
fig.show()
Probé, de varias maneras, hasta que llegue a este resultado:
RETO:
Aquí pueden encontrar la celda de código del ejemplo
Mi reto:
Reto: incluye compartimentación de 2 gráficos y reducción de gráfico.
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(ncols=4, nrows=2)
gs = axes[1,2].get_gridspec()
# remuevo y comparto subplots
for ax in axes[1,:-2]:
ax.remove()
axes_1x2 = fig.add_subplot(gs[1, :-2])
# para generar las funciones vistas en clase
x = np.linspace(0,5,11)
# funcion agregar grafico [1,2] y [1,3]
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 3.0, 0.01)
# funciones para grafico 1x2 compartido [1,:-2]
a = b = np.arange(0, 3, .02)
c = np.exp(a)
d = c[::-1]
# genero los graficos
axes[0,0].plot(x,np.cos(x))# ubicación de gráficos
axes[0,1].plot(x,np.sin(x),'y')
axes[0,2].plot(x,np.tan(x),'r')
axes[0,3].plot(x,np.cos(x)**2)
axes_1x2.plot(a, c, 'r--')
axes_1x2.plot(a, d, 'y:')
axes_1x2.plot(a, c + d, 'k')
axes[1,2].plot(t1, f(t1), 'v:')
axes[1,3].margins(1, 1) # zoom out (defalult 0.5)
axes[1,3].plot(t1, f(t1), 'g')
axes[1,3].set_title('Zoomed out')
fig.tight_layout()
plt.show()
FUENTE
https://matplotlib.org/3.1.1/tutorials/intermediate/gridspec.html
https://matplotlib.org/3.5.0/gallery/subplots_axes_and_figures/gridspec_and_subplots.html#sphx-glr-gallery-subplots-axes-and-figures-gridspec-and-subplots-py
Mi aporte al reto de la clase:
.
.
fig, axes = plt.subplots(3,3)
axes[0,0].plot(x,np.cos(x),'red')
axes[0,1].plot(x,np.tan(y),'blue')
axes[0,2].plot(x,np.sin(y),'gray')
axes[1,0].plot(x,y,'black')
axes[1,1].plot(y,x,'orange')
axes[1,2].plot(x,y,'green')
axes[2,0].plot(y,np.tan(y),'purple')
axes[2,2].plot(np.sin(x),y,'#FFF0C9')
axes[2,1].plot(x,z,'#4a6f22')
fig.tight_layout()
Mi reto:
<fig , ax = plt.subplots(2,4)
fig.set_size_inches(9,5)
ax[0,0].plot(x,y)
ax[0,0].set_title('Función seno')
ax[0,0].grid(False)
ax[0,1].plot(x,np.cos(x),color ='red',linestyle =':',linewidth = 1.5)
ax[0,1].set_title('Función Coseno')
ax[0,1].set_ylabel('cos(x)')
ax[0,1].grid(False)
ax[0,2].plot(x,x**3,color = 'purple')
ax[0,2].set_title('$x^{3}$')
ax[0,2].grid(False)
fig.tight_layout()
ax[0,3].plot(np.random.randn(20).cumsum(),color = 'green',linestyle='-.')
ax[0,3].set_title('Serie')
ax[0,3].grid(False)
ax[1,0].pie(df.groupby('cylinders').count().reset_index().iloc[:,[1]].values.reshape(5))
ax[1,1].hist(df['mpg'],color = '#F29446',edgecolor = 'black')
ax[1,2].bar(df['origin'].unique(),df.groupby('origin').mean()['horsepower'],
color = ['#596EFA','#DC6A6F','#A2E5F9'],edgecolor = 'black')
ax[1,3].hist(df['acceleration'],edgecolor ='black')
plt.show()>
'''
Mi reto:
Les comparto mi reto:
axes[0][0].plot(x, y, 'b')
axes[0][1].plot(x, np.sin(y), 'g')
axes[0][2].plot(x, np.cos(y), 'r')
axes[0][3].plot(x, np.tan(y), 'c')
axes[1][0].plot(x, np.sin(y)**2, 'm')
axes[1][1].plot(x, np.cos(y)**2, 'y')
axes[1][2].plot(x, np.tan(y)**2, 'k')
axes[1][3].plot(y, x, 'bo')
limIzquierda = -(np.pi * 2)
limDerecha = np.pi * 2
x_sen_cos = np.linspace(limIzquierda, limDerecha , 100)
sen = np.sin(x_sen_cos )
cos = np.cos(x_sen_cos )
x_polinomio = np.linspace(-100,100,100)
y = x_polinomio**2
t = x_polinomio **3
x_tan = np.linspace(0,np.pi, 100)
tan = np.tan(x_tan)
x_log = np.linspace(1,100, 1000)
log_arr = np.log(x)
x_vabsolut = np.linspace(-100, 100, 100)
valor_absoluto = np.abs(x_vabsolut)
x_tanh = np.linspace(-(2*np.pi), 2*np.pi, 100)
tanh = np.tanh(x_tanh)
fig, axes = plt.subplots(2,4)
(
axes[0,0].plot(x_polinomio, y , 'r'),
axes[0,1].plot(x_polinomio, t, 'g'),
axes[0,2].plot(x_vabsolut, valor_absoluto, 'b'),
axes[0,3].plot(x_tanh, tanh, 'black'),
axes[1,0].plot(x_sen_cos, sen, 'y'),
axes[1,1].plot(x_sen_cos, cos, 'orange'),
axes[1,2].plot(x_tan, tan, 'gold'),
axes[1,3].plot(x_log, log_arr, 'purple'),
fig.tight_layout(),
)
Reto de la clase:
Ejercicio de la clase:
fig, ((ax1, ax2, ax3, ax4), (ax5, ax6, ax7, ax8)) = plt.subplots(nrows=2, ncols=4)
ax1.plot(x, np.cos(x))
ax2.plot(x, np.sin(x),'y')
ax3.plot(x, np.tan(x),'r')
ax4.plot(x, np.cos(x)**2)
fig.tight_layout()

y = np.sin(x)
fig, axes = plt.subplots()
axes.plot(x,y,'r')
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,'r')
axes[1].plot(y,x,'r')
fig, (ax1,ax2) = plt.subplots(nrows=1, ncols=2)
ax1.plot(x,y,'r')
ax2.plot(y,x,'r')
fig, axes = plt.subplots(nrows=2, ncols=4)
#ax1.plot(x,y,'r')
#ax2.plot(y,x,'r')
axes[0,0].plot(x,np.cos(x))
axes[0,1].plot(x,np.sin(x))
axes[0,2].plot(x,np.tan(x))
axes[0,3].plot(x,np.cos(x)**2)
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(nrows=2, ncols=4)
#ax1.plot(x,y,'r')
#ax2.plot(y,x,'r')
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x))
ax3.plot(x,np.tan(x))
ax4.plot(x,np.cos(x)**2)
ax5.plot(x,x**2)
ax6.plot(x,x**3)
ax7.plot(x,1/x)
ax8.plot(x,x-1)
fig.tight_layout() # agrupa mejor los elementos
Mi aporte
fig, ((ax1, ax2, ax3, ax4),(ax5, ax6, ax7, ax8)) = plt.subplots(2, 4)
ax1.plot(x, np.cos(y), 'm*-')
ax1.set_facecolor('blue')
ax2.plot(y, np.cos(x), 'rd-')
ax2.set_facecolor('gray')
ax3.plot(x, np.tan(y), 'b:')
ax3.set_facecolor('magenta')
ax4.plot(y, np.sin(y)**3, 'wd-')
ax4.set_facecolor('green')
ax5.plot(np.sin(x), np.tan(-y), 'b+-')
ax5.set_facecolor('yellow')
ax6.plot(np.tan(y), x**-3, 'y')
ax6.set_facecolor('red')
ax7.plot(y, -x, 'b')
ax7.set_facecolor('brown')
ax8.plot(-y, -x, 'r:')
ax8.set_facecolor('blue')
fig.tight_layout()
Mi reto:
.
Mi respuesta al reto
fig, ((ax1, ax2, ax3, ax4), (ax5, ax6, ax7, ax8)) = plt.subplots(2, 4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x), 'y')
ax3.plot(x,np.tan(x), 'r')
ax4.plot(x,np.cos(x)**2)
ax5.plot(x,np.tan(x))
ax6.plot(x,np.cos(x), 'b:')
ax7.plot(x,np.tan(x), 'g--')
ax8.plot(x,np.cos(x)*5)
fig.tight_layout()
plt.show()
El desafío…
Mi Reto:
def eq(x, y):
return 0.2*x + 0.3*y + 0.4 + 0.2*(x - x[0]*0.2 + y[0])
fig, ((ax1, ax2, ax3, ax4), (ax5, ax6, ax7, ax8)) = plt.subplots(2,4)
ax1.plot(x, np.sin(x), 'b')
ax2.plot(y, np.cos(x), 'purple')
ax3.plot(x, np.tan(y), 'orange')
ax4.plot(y, np.cos(y)**2, 'black')
ax5.plot(x, (10*x) + y)
ax6.plot(y, (-10*y) + x, 'mD:')
ax7.plot(x - y, 'teal')
ax8.plot(x, eq(x, y), 'r')
fig.tight_layout()
Para mejorar la visualizacion utiliza ‘figsize()’
<fig, ((axes1, axes2, axes3, axes4), (axes5, axes6, axes7, axes8)) = plt.subplots(2,4,figsize=(5,4))>
Mi reto:
Mi aporte!
Hola,
El siguiente código define cada uno de los axes mediante un for loop.
import matplotlib.pyplot as plt
import numpy as np
i = 1
fig, axes = plt.subplots(nrows=2, ncols=4)
for ax in axes.ravel():
ax.plot(np.sin(x * i), 'r')
i += 1
fig.tight_layout()
El resultado es el siguiente:
RETO
fig, axes = plt.subplots(2, 4)
fig.tight_layout()
fig.set_facecolor('0.9')
axes[0,0].plot(x, np.cos(x), 'y+')
axes[0,0].set_title('x and cos(x)')
axes[0,1].plot(y, np.cos(y), 'g.')
axes[0,1].set_title('y and cos(y)')
axes[0,2].plot(x, np.tan(y), 'c:')
axes[0,2].set_title('x and tan(y)')
axes[0,3].plot(x**(1/2), x+8, 'C9_')
axes[0,3].set_title('root(x) and x + 8')
axes[1,0].plot(np.pi* y, np.cos(x), 'C8o')
axes[1,0].set_title('y and cos(x)')
axes[1,1].plot(np.sin(y), np.tan(y) **3, 'C5|')
axes[1,1].set_title('sin(y) and tan(y)')
axes[1,2].plot(np.sqrt(y), np.tan(y), 'C6D')
axes[1,2].set_title('square y tan(y)')
axes[1,3].plot(y**(1/2), x+8, 'C1+')
axes[1,3].set_title('root(y) and x + 8')
Este es mi reto completado
Use dos ciclo for para generar algunas graficas y escribir menos código.
nrows=2
ncols=4
colors=['r','b','g','k']
fig,axs = plt.subplots(nrows,ncols)
for i in range(nrows):
for j in range(ncols):
axs[i,j].plot(x,x**j,color=colors[j])
fig.tight_layout()
Mi reto!
Me encanto
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2, 4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x),'y')
ax3.plot(x,np.tan(x),'r')
ax4.plot(x,np.cos(x)**2)
ax5.plot(y,np.sin(y),'bo-')
ax6.plot(y, np.tan(x), 'g--')
ax7.plot(y, np.cos(x), 'g:')
ax8.plot(y, np.sin(x), 'r--')
fig.tight_layout()
mi aporte
<fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(nrows=2, ncols=4)
ax1.plot(x,np.cos(x),'b')
ax2.plot(x,np.sin(x),'r')
ax3.plot(x,np.tan(x),'g')
ax4.plot(x,np.cos(x)**2,'m')
ax5.plot(x,np.exp(x),'b')
ax6.plot(x,np.tan(z),'g')
ax7.plot(x,np.cos(z),'b')
ax8.plot(x,np.sin(z),'y')
fig.tight_layout
fig.show>
Mi reto:
x = np.linspace(0,2*np.pi,100)
fig,((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
fig.suptitle('Example figures',fontsize=18)
plt.rcParams["figure.figsize"] = (19, 7) # Tamaño
ax1.plot(x,np.sin(x),'r>')
ax1.set_title('sin(X)')
ax2.plot(x,np.tan(x),'b')
ax2.set_title('tan(X)')
ax3.plot(x,np.cos(x),'b--')
ax3.set_title('cos(x)')
ax4.scatter(x,np.sqrt(x))
ax4.set_title('sqrt(x)')
ax5.plot(x,np.cos(6*x) * np.exp(-x))
ax6.plot(x,3*x**2-20*x-1)
ax7.plot(x,np.exp(x),'r--')
ax7.set_title('e^2')
ax8.plot(x,-np.sin(x),'b--')
Mi Reto
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8),(ax9,ax10,ax11,ax12),(ax13,ax14,ax15,ax16)) = plt.subplots(nrows=4, ncols=4)
ax1.plot(x,np.sin(x),'g')
ax2.plot(y,np.cos(x),'y')
ax3.plot(x,np.tan(x),'b')
ax4.plot(x,np.cos(x)**2,'pink')
ax5.plot(x,np.arcsin(x),'g')
ax6.plot(y,np.arccos(x),'y')
ax7.plot(x,np.arctan(x),'b')
ax8.plot(y,np.arctan(x),'pink')
ax9.plot(y,np.sin(y),'g')
ax10.plot(x,np.cos(y),'y')
ax11.plot(y,np.tan(y),'b')
ax12.plot(y,np.cos(y)**2,'pink')
ax13.plot(y,np.arcsin(y),'g')
ax14.plot(x,np.arccos(y),'y')
ax15.plot(y,np.arctan(y),'b')
ax16.plot(x,np.arctan(y),'pink')
fig.tight_layout()
a ver, básico pero terminado mi grafico con las 8 propuestas.
Hice el reto, pero le cambié el paso en el x para poder apreciar mejor las curvas que se forman. Nunca pares de aprender uwu
x =np.linspace(-11,11,100)
fig ,((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4,figsize=(17,10))
ax1.plot(x,np.cos(x))
ax1.set_facecolor('black')
ax1.spines['bottom'].set_color('white')
ax1.spines['top'].set_color('white')
ax1.spines['left'].set_color('white')
ax1.spines['right'].set_color('white')
ax1.xaxis.label.set_color('white')
ax1.yaxis.label.set_color('white')
ax1.tick_params(axis='x', colors='white')
ax1.tick_params(axis='y', colors='white')
ax1.grid(color='r', linestyle=':', linewidth=1)
ax1.set_title(r'$Sin(x)$')
ax1.set_xlabel(r"$x$ o $\pi rad$")
ax1.set_ylabel(r"$y$")
#################################
ax2.plot(x,np.sin(x),'y')#########
###########################33
ax3.plot(x,np.tan(x),'r')
ax3.set_ylim([-6, 6])
ax3.set_xlim([-np.pi, np.pi])
ax3.set_xticks(np.arange(-2*np.pi, 5*np.pi/2, np.pi/2))
ax3.grid(True)
# Trazo una línea vertical y horizontal en la coordenada (x,y)=(0,0) color gold ( #D4AF37)
# y con trazo - linea
ax3.axvline(0, color='#D4AF37', ls="-")
ax3.axhline(0, color='#D4AF37', ls="-")
def axvlines(ax=None, xs=[0, 1], ymin=0, ymax=1, **kwargs):
ax = ax or plt.gca()
for x in xs:
ax.axvline(x, ymin=ymin, ymax=ymax, **kwargs)
axvlines(ax=ax3, xs=[-3*np.pi/2, -1*np.pi/2, np.pi/2, 3*np.pi/2, 5*np.pi/2], c='b', ls='--')
ax3.set_xticklabels([r'$-2 \pi $',r'$-3\pi /2$',r'$-\pi $',r'$-\pi /2$',
r'0', r'$\pi /2$',r'$\pi $',r'$3\pi /2$', r'$2\pi$'], rotation=90)
##########################33
ax4.plot(x,np.cos(x)/x,'m')
#Reto:
ax5.plot(x,np.sinh(x))
ax6.plot(x,np.tanh(x),'g:')
ax7.plot(x,np.cosh(x),'r--')
ax8.plot(x,np.log(x),'m:')
fig.tight_layout()
#fig.set_size_inches(17,10)
fig.set_facecolor('#463D3D')#### color de todo el lienzo
plt.show()
Que clase de brujería es esta?
np.random.seed(1)
x = np.random.normal(size =5000)
y = x + np.random.normal(size=5000)
fig, ax = plt.subplots()
ax.hist2d(x,y, bins=20)
plt.show
Este es el resultado del reto
Saludos, pongo mi aporte
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
#Otra manera es realizando el array en forma de tupla anticipadamente
#Usando el metodo "Clases"
ax1.plot(x, np.cos(x), 'b.')
ax2.plot(x, np.sin(x), 'y')
ax3.plot(x, np.tan(x), 'r')
ax4.plot(x, np.cos(x)**2, 'g')
ax5.plot(x, np.cos(x)+2,'-r')
ax6.plot(x, np.sin(x), 'r:')
ax7.plot(x, np.tan(x), '-yD')
ax8.plot(x, np.cos(x)**2, '-g.')
fig.tight_layout()
#Cambiando propiedad de gráficas
'''
En esta práctica se junta los datos y genera una carga cognitiva negativa.
por lo tanto modificando sólo la "fig" podemos acceder a otro tipo de
visualización.
'''
mireto usandocositasde la clase 1
from numpy import linspace
fig,((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8))=plt.subplots(2,4)
ax1.plot(x,np.cos(x),'m--')
ax2.plot(x,np.sin(x),'r--')
ax3.plot(x,np.tan(x),'g--')
ax4.plot(x,1/np.sin(x),'b--')
ax5.plot(x,1/np.cos(x),'p--')
ax6.plot(x,np.log10(x),linestyle=':')
ax7.plot(x,x**2,linestyle='-')
ax8.plot(x,x**3,'r:')
fig.tight_layout()
fig.show()
Petando mi computador 😄
nr, nc = 10, 10
fig, axes = plt.subplots(nr, nc)
plt.rcParams["figure.figsize"] = (25, 25)
fig.tight_layout() # Arreglar el Figure
# Establecer todos los axes con fondo negro
for i in range(nr):
for j in range(nc):
axes[i,j].set_facecolor('black')
option = choice(['yellow','blue','red','green','magenta'])
axes[i,j].plot(x,y,color=option)
Resolviendo el reto con mis propios datos !!
fig, axes = plt.subplots(2,4)
axes[0,0].plot(x,y)
axes[0,1].plot(np.cos(y),x, 'r')
axes[0,2].plot(np.sin(y),x, 'r')
axes[0,3].plot(np.tan(y),x, 'r')
axes[1,0].plot(y,np.cos(x), 'r')
axes[1,1].plot(y,np.sin(x), 'r')
axes[1,2].plot(y,np.tan(x), 'r')
axes[1,3].plot(y,np.sqrt(x), 'r')
#mejorar la visualización de las figuras
fig.tight_layout()
Información resumida de esta clase
#EstudiantesDePlatzi
Subplot quiere decir generar varias gráficas en un mismo lienzo
Puedo definir un lienzo con diferentes axes en una misma línea de código
Dentro de los parámetros de la función subplots, puedo definir el número de filas y de columnas que deseo se creen
Para acceder a la gráfica debo utilizar el índice
Con la función tight_layout( puedo crear espacios en medio de las gráficas para que mejoren estéticamente
Reto:
Solución al Reto
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2, 4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x),'y')
ax3.plot(x,np.tan(x),'r')
ax4.plot(x,np.cos(x)**2,'k')
ax5.plot(x,1/np.cos(x))
ax6.plot(x,1/np.sin(x),'y')
ax7.plot(x,1/np.tan(x),'r')
ax8.plot(x,np.sin(x)**2,'k')
fig.tight_layout()
Mi solución al reto:
Reto Cumplido
fig, axes = plt.subplots(nrows=2,ncols=4)
axes[0,0].plot(x,np.cos(x),'k')
axes[0,1].plot(x,np.sin(x),'bo')
axes[0,2].plot(x,np.tan(x),'k:')
axes[0,3].plot(x,np.cos(x)**2,'g:')
axes[1,0].plot(x,x**2,'k')
axes[1,1].plot(x,y**2,'b')
axes[1,2].plot(x,y*2,'k:')
axes[1,3].plot(x,x*2,'g:')
fig.tight_layout()
Muy interesante la clase. Probé diferentes funciones trigonométricas.
fig, axes = plt.subplots(nrows=3,ncols=3)
axes[0,0].plot(a,np.sin(a),‘b’)
axes[0,1].plot(a,np.cos(a),‘r’)
axes[0,2].plot(a,np.tan(a),‘g’)
axes[1,0].plot(a,np.arcsin(a),‘b-’)
axes[1,1].plot(a,np.arccos(a),‘r-’)
axes[1,2].plot(a,np.arctan(a),‘g-’)
axes[2,0].plot(a,np.arcsinh(a),‘b–’)
axes[2,1].plot(a,np.arccosh(a),'r–’)
axes[2,2].plot(a,np.arctanh(a),‘g–*’)
fig.tight_layout()
Hola a Todos,
Comparto mi código y resultado, quise probar diferentes ocpiones de formuilas, gráficas, líneas, etc.
fig, ((ax1,ax2,ax3,ax4), (ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
ax1.plot(x,np.cos(x),'b--')
ax2.plot(x,np.tan(x),'rD:')
ax3.plot(x,np.arccos(x),'y-.')
ax4.plot(x,np.arctan(x),'^g')
ax5.plot(x,np.arctan(x)**3,'salmon')
ax6.plot(x,np.arcsin(x)*0.5,'mH')
ax7.plot(x,np.sin(x)**4,'C4*--')
ax8.plot(x,np.cosh(x),'C3P')
fig.tight_layout()
MI RETO
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4) # Tuple by row !
ax1.plot(x, np.cos(x))
ax2.plot(x, np.sin(x,y),'y')
ax3.plot(x, np.tan(x,y),'r')
ax4.plot(x, np.abs(x) * 5 * np.sin(10 * x), 'r')
ax5.plot(x, np.log(x + 1))
ax6.plot(x, np.exp(x) * (np.cos(x) ** 2),'r')
ax7.plot(x, np.sin(x) + np.cos(2*x))
ax8.plot(x, np.cos(x) ** 2)
fig.tight_layout()
fig.show()
fig, axes = plt.subplots(nrows=2,ncols=4)
axes[0,0].plot(x,np.cos(x))
axes[0,1].plot(x,np.sin(x),'r')
axes[0,2].plot(x,np.tan(x),'y')
axes[0,3].plot(x,np.sqrt(x),'b')
axes[1,0].plot(x,x,'purple')
axes[1,1].plot(x,x**2,'gray')
axes[1,2].plot(x,x**3,'green')
axes[1,3].plot(x,x**4,'cyan')
fig.tight_layout()
Forma 1:
fig, axes = plt.subplots(2,4)
axes[0,0].plot(x,y)
axes[0,1].plot(y,x, 'r')
axes[0,2].plot(x,np.cos(x), 'orange')
axes[0,3].plot(y,np.sin(y), 'C8')
axes[1,0].plot(x,np.cos(y), 'y')
axes[1,1].plot(y,np.tan(x), 'm')
axes[1,2].plot(x,y**2, 'g')
axes[1,3].plot(x**4,np.tan(x), 'black')
fig.tight_layout()
Forma 2
fig, ((axes1, axes2, axes3, axes4), (axes5, axes6, axes7, axes8)) = plt.subplots(2,4)
axes1.plot(x, np.sin(x), 'b')
axes2.plot(y, np.cos(x), 'purple')
axes3.plot(x, np.tan(y), 'orange')
axes4.plot(y, np.cos(y)**2, 'black')
axes5.plot(x,np.cos(y), 'y')
axes6.plot(y,np.tan(x), 'm')
axes7.plot(x,y**2, 'g')
axes8.plot(x**4,np.tan(x), 'black')
fig.tight_layout()
<
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(nrows=2, ncols=4)
ax1.plot(x,b,'bs:')
ax2.plot(b,x,'ro--')
ax3.hist(x)
ax4.pie(b)
ax5.plot(x,np.sin(x**3),'bd--')
ax6.plot(b,np.cos(x**3),'#6aaa96')
ax7.scatter(b,np.cos(x**3))
ax8.hist((x-5)**2)
fig.tight_layout()
fig.show()
>
Reto:
x = np.linspace(0, 2 * np.pi, 1000)
fig, axes = plt.subplots(nrows=2, ncols=4)
axes[0, 0].plot(x, np.sin(2 * 3 * np.pi * x), 'red')
axes[0, 1].plot(x, np.exp(-x) * np.cos(2 * 1 * np.pi * x), 'blue')
axes[0, 2].plot(x, np.cos(x) ** -2, 'gray')
axes[0, 3].plot(x, np.exp(np.sin(x)), 'orange')
axes[1, 0].plot(x, np.sin(np.exp(x)), 'green')
axes[1, 1].plot(x, np.exp(-(x-3)**2), 'black')
axes[1, 2].plot(x, np.sin(x ** 2) * np.exp(-(x-3)**2), 'red')
axes[1, 3].plot(x, np.sin(x ** 2) * np.exp(-(np.sin(x))**2), 'violet')
fig.tight_layout()
plt.rcParams["figure.figsize"] = (15, 10)
Hola a Todos,
Mi reto
fig, axes = plt.subplots(nrows=2,ncols=4)
axes[0,0].plot(x,np.cos(y),'b')
axes[0,1].plot(x,np.tan(y),'b')
axes[0,2].plot(x,np.sin(y),'y')
axes[0,3].plot(x,np.cos(y)**2,'b')
axes[1,0].plot(x,np.cos(y**3),'b')
axes[1,1].plot(x,np.arctan(x),'g')
axes[1,2].plot(x**3,np.sin(y),'p')
axes[1,3].plot(x,np.arccos(y)**2,'b')
# tight_layout improbe space of visualization
fig.tight_layout()
Tenia una duda con este codigo de como quitar los ticks y sus labels del lado izquierdo de la grafica azul:
fig = plt.figure()
axes2 = fig.add_axes([0.1,0.1,1.0,1.5])
axes = fig.add_axes([0.6,0.1,0.5,0.9])
axes.plot(x,y, 'b')
axes2.plot(y,x,color = "turquoise")
axes.tick_params(axis="y",right= True, labelright=True)
plt.show()
Entonces me di cuenta de que solo tenia que insertar “left” y “labelleft” con valor False para que se eliminaran:
fig = plt.figure()
axes2 = fig.add_axes([0.1,0.1,1.0,1.5])
axes = fig.add_axes([0.6,0.1,0.5,0.9])
axes.plot(x,y, 'b')
axes2.plot(y,x,color = "turquoise")
axes.tick_params(axis="y",left = False,right= True,labelleft = False, labelright=True)
axes.tick_params(axis="x",bottom = False,top= True,labelbottom = False, labeltop=True)
plt.show()
también lo aplique para mover los de abajo y evitar que se encimaran con los ticks y label ticks de la grafica turquesa
#Alternativa para generar una matriz de tipo fig, accediendo a cada gráfica mediante los nombres dados en una tupla
fig, ((ax1, ax2, ax3, ax4), (ax5, ax6, ax7, ax8)) = plt.subplots(2,4)
ax1.plot(x, np.sin(x), ‘^b’)
ax2.plot(y, np.cos(x), ‘purple’, linestyle=’-.’)
ax3.plot(x, np.tan(y), ‘orange’)
ax4.plot(y, np.cos(y)**2, ‘bs’)
ax5.plot(x, np.cos(y), ‘r.’)
ax6.plot(x, np.sin(y), ‘r:’)
ax7.plot(x, np.tan(x), ‘go’)
ax8.plot(x, np.tan(x)**2, ‘b–’)
#mejorar la visualización de las figuras
fig.tight_layout()
notas de la clase
Con subplot se puede trabajar en un arreglo de gráficas a las cuales se accede a través de los índices.
Cómo trabajar con subplot para graficar Creamos los datos que vamos a utilizar
________________________________________
[2]
0 s
import matplotlib.pyplot as plt
import numpy as np
________________________________________
[3]
0 s
x = np.linspace(0,10,22)
y = np.sin(x)
________________________________________
[7]
1 s
fig, axes = plt.subplots()
axes.plot(x,y,"g")
________________________________________
[12]
1 s
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,"g")
axes[1].plot(x,y,"r")
# acá estamos creando una sola fila pero con dos columnas
#aca arrojaria un ubjeto tipo figura, pero en este caso seria un array
#con las posiciones 0 y 1
________________________________________
[13]
0 s
fig, (ax1,ax2) = plt.subplots(nrows=1, ncols=2)
ax1.plot(x,y,"g")
ax2.plot(x,y,"r")
#aca cambiamos el array y lo definimos como una tupla
________________________________________
[19]
fig, axes = plt.subplots(2,4)
axes[0,0].plot(x,np.cos(x))
axes[0,1].plot(x,np.sin(x),"b")
axes[0,2].plot(x,np.tan(x),"y")
axes[0,3].plot(x,np.cos(x)**3)
#aca estamos definiendo dos filas y cuatro columnas
#y estamos diligenciando pla posicion [0,0] y es el unico axes que me mostrara
#con la líneas
#aca estamos entrando a los objectos pero estamos trabajando multiples graficos
________________________________________
[22]
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x),"b")
ax3.plot(x,np.tan(x),"y")
ax4.plot(x,np.cos(x)**3)
#aca nos aparece las mismas graficas de la funcion anterior solo que se define previamente
#la salida del arreglo
fig.tight_layout()
#con esta función puedo organizar mucho mejor mis graficas
________________________________________
[36]
1 s
fig, ((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8)) = plt.subplots(2,4)
ax1.plot(x,np.cos(x))
ax2.plot(x,np.sin(x),"b")
ax3.plot(x,np.tan(x),"y")
ax4.plot(x,np.cos(x)**3)
ax5.plot(x,y**4,"r")
ax6.plot(x,1/np.tanh(x),'m:')
ax7.plot(x,y,"black")
ax8.plot(x,np.cosh(x),"g-->")
fig.tight_layout()
******reto de la clase ******
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.