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 鈥渓lenando鈥 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 鈥渙鈥 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 鈥榝igsize()鈥

<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),鈥榖鈥)
axes[0,1].plot(a,np.cos(a),鈥榬鈥)
axes[0,2].plot(a,np.tan(a),鈥榞鈥)
axes[1,0].plot(a,np.arcsin(a),鈥榖-鈥)
axes[1,1].plot(a,np.arccos(a),鈥榬-鈥)
axes[1,2].plot(a,np.arctan(a),鈥榞-鈥)
axes[2,0].plot(a,np.arcsinh(a),鈥榖鈥鈥)
axes[2,1].plot(a,np.arccosh(a),'r鈥
鈥)
axes[2,2].plot(a,np.arctanh(a),鈥榞鈥*鈥)
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 鈥渓eft鈥 y 鈥渓abelleft鈥 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), 鈥榩urple鈥, linestyle=鈥-.鈥)
ax3.plot(x, np.tan(y), 鈥榦range鈥)
ax4.plot(y, np.cos(y)**2, 鈥榖s鈥)
ax5.plot(x, np.cos(y), 鈥榬.鈥)
ax6.plot(x, np.sin(y), 鈥榬:鈥)
ax7.plot(x, np.tan(x), 鈥榞o鈥)
ax8.plot(x, np.tan(x)**2, 鈥榖鈥撯)

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