No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Subplots

5/18
Recursos

Con subplots se puede trabajar en un arreglo de gráficas a las cuales se accede a través de los índices.

Cómo trabajar con subplots para graficar

  • Creamos los datos que vamos a utilizar
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,11)
y = x**2

Crear una gráfica tipo Fig

  • Para crear una gráfica que sea tipo Fig. necesitas trabajar el siguiente código:
fig, axes = plt.subplots()
axes.plot(x,y)
plt.show()

![1.JPG](imagen 1.png)

  • Varias gráficas tipo fig.
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,'b')
axes[1].plot(y,x,'r')
plt.show()

![1.JPG](imagen 2.png)

  • Acceder a los gráficos mediante el nombre almacenado en una tupla.
fig, (axes1,axes2) = plt.subplots(nrows=1, ncols=2)
axes1.plot(x,y,'b')
axes2.plot(y,x,'r')
plt.show()
3.JPG

Generar una matriz de tipo fig, con dos filas y cuatro columnas

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](imagen 3.png)

  • Alternativa para generar una matriz de tipo fig, accediendo a cada gráfica mediante los nombres dados en una tupla
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](imagen 4.png)

Reto

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Mi reto:


Mi reto cumplido …!

Resumen de la clase

Subplots

Con subplots se puede trabajar en un arreglo de graficas a las cuales se accede a traves de los indices.

  • Creamos los datos que vamos a utilizar
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,11)
y = x**2
  • Crear una grafica que sea de tipo fig
fig, axes = plt.subplots()
axes.plot(x,y,'b')
plt.show()
  • Varias graficas de tipo fig
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x,y,'b')
axes[1].plot(y,x,'r')
plt.show()
  • Acceder a los graficos mediante el nombre almacenado en una tupla
fig, (axes1,axes2) = plt.subplots(nrows=1, ncols=2)
axes1.plot(x,y,'b')
axes2.plot(y,x,'r')
plt.show()
  • Generar una matriz de tipo fig, con dos filas y cuatro columnas
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
  • Alternativa para generar una matriz de tipo fig, accediendo a cada grafica mediante los nombres dados en una tupla
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:

Ejemplo de Matplotlib Orientado a Objetos (OO)

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:

Este es mi reto 📊

  • Usé los “o” para hacer el gráfico con puntos

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()

![](
Reto cumplido, me gusto esta clase, ahora si entendi como generar graficos

Comparto mi reto

Reto:

Reto resuelto

![](

![](

Mi reto:

5. Subplots

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,11)
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 reto


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:

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.

Código:


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()

Resultado:


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()

Reto cumplido

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()

Mi respuesta al reto:

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 ******