No tienes acceso a esta clase

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

Aprende Inglés, Programación, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Suscríbete

Termina en:

5 Días
9 Hrs
34 Min
31 Seg

Leyendas, etiquetas, títulos, tamaño

6/18
Recursos

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
fig, (ax1,ax2) = plt.subplots(1,2)
ax1.plot(x,y, 'b')
ax2.plot(y,x, 'r')
plt.show()

Contexto a los gráficos con títulos

Para crear los títulos realiza lo siguiente:

fig, (ax1,ax2) = plt.subplots(1,2)
ax1.plot(x,y, 'b')
ax1.set_title(""Relacion X - Y"")

ax2.plot(y,x, 'r')
ax2.set_title(""Relacion Y - X"")
titulo.JPG

Contexto agregando etiquetas

  • Agrega labels en los ejes
fig, (ax1,ax2) = plt.subplots(1,2)
ax1.plot(x,y, 'b', )
ax1.set_title(""Relacion X - Y"")
ax1.set_xlabel(""X"")
ax1.set_ylabel(""Y"")

ax2.plot(y,x, 'r')
ax2.set_title(""Relacion Y - X"")
ax2.set_xlabel(""Y"")
ax2.set_ylabel(""X"")
ejes.JPG

Cambiar el tamaño a las figuras

Realiza la siguiente acción:

fig, (ax1,ax2) = plt.subplots(1,2, figsize= (1,10))
size.JPG

* Aplicar etiquetas (por defecto pone la mejor opción)

fig, (ax1,ax2) = plt.subplots(1,2)
ax1.plot(x,y, 'b', label = ""sin(x)"")
ax1.set_title(""Relacion X - Y"")
ax1.set_xlabel(""X"")
ax1.set_ylabel(""Y"")
ax1.legend()

* Modificar la localización de la etiqueta

ax1.legend(loc = ""upper center"")
loc.JPG
  • Otras ubicaciones
upper right upper left lower left lower right right

Aportes 39

Preguntas 2

Ordenar por:

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

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:

matplotlib.org/…

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.

Podemos tener distintas formas de líneas. Además usando la librería path_effects se logra efecto sobra y la línea que incluye el error.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patheffects as path_effects

x = np.linspace(0, 3.14 * 2, 100)  # Sample data.

fig, ax = plt.subplots(figsize=(15, 5)) #, layout='constrained')

ax.plot(x, np.sin(x), label='seno de x', color='yellow', linewidth=3, linestyle='--')  

ax.plot(x, np.cos(x), label='coseno de x', color='orange', linewidth=4,linestyle=':')

l, = ax.plot(x, np.sin(2*x), label='seno de 2x')
l.set_color('purple')
l.set_linewidth(3.5)
l.set_linestyle('-.')

ax.plot(x, np.sin(0.5*x), label='seno de 1/2 x', color='blue',linewidth=4, path_effects=[path_effects.SimpleLineShadow(), path_effects.Normal()]) 

#ax.plot(x, np.cos(x-3.14), label='coseno x-pi') 
ax.errorbar(x, np.cos(x-3.14) , fmt='-o', lw=2, mew=0, ms=5, c='pink', path_effects=[pe.Stroke(linewidth=5, foreground='k'), pe.Normal()], label='coseno x-pi')

ax.set_xlabel('Radianes')  # Add an x-label to the axes.
ax.set_ylabel('Valores')  # Add a y-label to the axes.

ax.set_title("Funcions trigonométricas")  # Add a title to the axes.
ax.legend( bbox_to_anchor=(1,0.6))

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

grid(): Permite hacer una cuadrícula en nuestros axes.

no sé, me pareció divertido

import numpy as np
import matplotlib.pyplot as plt

# Dibujos
casa=[[1,0,0,0,1],[0,0,1,2,2],np.linspace(0,2,5),[1,1.5,2,1.5,1]]
departamento=[np.linspace(0,4,5),[0,0,0,0,0],[0.5,0.5,1,1.5,1.5],[0,2,2,2,0],[2,2,2.5,3,3]]

fig, axes = plt.subplots(1,2,figsize=(10,5))
axes[0].plot(casa[1],casa[0],"orange")
axes[0].plot(casa[2],casa[3],"red")

axes[1].plot(departamento[0],departamento[1],"green") 
axes[1].plot(departamento[2],departamento[3],"blue" and departamento[4],departamento[3],"blue")

#invisible numeritos
axes[0].axes.get_xaxis().set_visible(False)
axes[0].axes.get_yaxis().set_visible(False)
axes[1].axes.get_xaxis().set_visible(False)
axes[1].axes.get_yaxis().set_visible(False)

plt.show()

notas de la clase

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

Si no les funciona el plt.xlabel(‘x’) ni el plt.ylabel(‘y’) usen esto, aunque no estaría de más saber por qué me funcionó de esta manera en el Colab:

La concoide de nicomedes. Solamente que sale un toque distorsionada, nose como se cambia la relacion en cada grafico.

Orientado a objetos:

fig, axes = plt.subplots(1,2,figsize=(5,5))
axes[0].plot(x,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)
axes[1].set_title(‘Relacion Y - X’)
axes[1].set_xlabel(‘Y’)
axes[1].set_ylabel(‘X’)

Pyplot sin orientarse a objetos:

plt.plot(x,y,label=‘sin(x)’)
plt.title(‘Este es un titulo’)
plt.xlabel(‘x’)
plt.ylabel(‘y’)
plt.legend()

Me encanto esta clase porque me permitio mejorar mis capacidades como programador y como debo diseñar los componentes de diseño de graficas.

Genial…!

Ecuaacion parametrica de la circunferencia

![](https://static.platzi.com/media/user_upload/image-a88a8830-c8e1-411d-856f-c144a0e7b8c3.jpg)![](blob:vscode-webview://0ho2f3lgnhpo3po7a2jg3304sqfu6men9n151b0cgovi13diapl7/27deb51b-8d2d-48c4-b8c2-6d7216a693b3)
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.

Etiquetas

Modo orientado a objetos:

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

6. Leyendas, etiquetas, títulos, tamaño

import matplotlib.pyplot as plt
import numpy as np

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

fig, axes = plt.subplots(1,2,figsize=(5,5))
axes[0].plot(x,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)
axes[1].set_title('Relacion Y - X')
axes[1].set_xlabel('Y')
axes[1].set_ylabel('X')

plt.plot(x,y,label='sin(x)')
plt.title('This is a title')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(bbox_to_anchor=(1,0.9))
plt.plot(x,y,label='sin(x)')
plt.plot(x,np.cos(x),label='cos(x)')
plt.title('Este es un titulo')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc = "lower left")

La práctica…
fig, axes = plt.subplots(1,2,figsize=(5,5))
axes[0].plot(x,y,label=(’$sin(x)$’))
axes[0].set_title(‘Relación X - Y’)
axes[0].set_xlabel(‘X’)
axes[0].set_ylabel(‘Y’)
axes[0].legend()
axes[1].plot(y,x, label=(’$sin(y)$’))
axes[1].set_title(‘Relación Y - X’)
axes[1].set_xlabel(‘Y’)
axes[1].set_ylabel(‘X’)
axes[1].legend()
fig.tight_layout()

Este código generará una figura con seis subfiguras, cada una mostrando un armónico diferente de la señal sinusoidal

import numpy as np
import matplotlib.pyplot as plt

# Generar señal sinusoidal
t = np.linspace(0, 2*np.pi, 1000)
f = 1
y = np.sin(2*np.pi*f*t)

# Crear figura y subfiguras
fig, axes = plt.subplots(nrows=3, ncols=2, figsize=(10,10))

# Graficar armónicos en cada subfigura
for n in range(1, 7):
    i = (n-1) // 2
    j = (n-1) % 2
    freq = n*f
    y_harm = np.sin(2*np.pi*freq*t)
    axes[i, j].plot(t, y_harm, label='Armónico %d' % n)
    axes[i, j].set_xlabel('Tiempo')
    axes[i, j].set_ylabel('Amplitud')
    axes[i, j].legend()

# Mostrar figura
plt.show()


<code>


x = np.linspace(1,5,21)
x1 = np.linspace(0.1,5.1,21)
y = np.log(x)
y1 = np.exp(x)
y2 = np.sin(x)
y3 = np.cos(x)
y4 = np.log(x1)
y5 = np.exp(x1)
y6 = np.sin(x1)
y7 = np.cos(x1)
fig, ((ax1, ax2, ax3, ax4),(ax5, ax6, ax7, ax8)) = plt.subplots(nrows=2, ncols=4, figsize=(16,8), sharey=False)

sns.set(style='darkgrid')
ax1.plot(x,y, linestyle=':', color='darkblue', label='Logarithm')
ax1.legend()
ax1.grid(True)

ax2.plot(x,y1, linestyle='-', color='tomato', label='Exponential')
ax2.legend()
ax2.grid(True)

ax3.plot(x,y2, linestyle='-.', color='lightgreen', label='Sin')
ax3.legend()
ax3.grid(True)

ax4.plot(x,y3, linestyle='-.', color='brown', label='Cos')
ax4.legend()
ax4.grid(True)

ax5.plot(x1,y4, linestyle=':', color='darkblue', label='Logarithm')
ax5.legend()
ax5.grid(True)

ax6.plot(x1,y5, linestyle='-', color='tomato', label='Exponential')
ax6.legend()
ax6.grid(True)

ax7.plot(x1,y6, linestyle='-.', color='lightgreen', label='Sin')
ax7.legend()
ax7.grid(True)

ax8.plot(x1,y7, linestyle='-.', color='brown', label='Cos')
ax8.legend()
ax8.grid(True)

fig.tight_layout()

plt.show()

Es importante dar nombre a los elementos de los graficos.

plt.plot(x,y,label = "sin(x)")
plt.title("Este es un titulo")
plt.xlabel("Eje x")
plt.ylabel("Eje y")
plt.legend(loc= "lower left", bbox_to_anchor=(0.7,0.7))

Información resumida de esta clase
#EstudiantesDePlatzi

  • Es importante que busquemos la manera de hacer que nuestras gráficas representen la información de la manera más clara posible

  • Con la función set_title puedo darle títulos a mis gráficas

  • Con set_xlabel puedo darle un nombre a mi eje x

  • Con set_ylabel puedo darle un nombre a mi eje y

  • Con el parámetro figsize de la función subplots puedo aumentar el tamaño de mi lienzo

  • Con la función legend puedo generar una legenda que de contexto al gráfico

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.

hola a todos
mi aporte

otras ubicaciones
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center

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 = 1

fix, axes = plt.subplots(nrow,ncol, figsize=(15,10),  constrained_layout = True)
for row in range(nrow):
    for col in range(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()

Las distintas posiciones en que puedes colocar la leyenda usando el parametro loc:

Un ejemplo aplicado en un pie chart:

#Passengers by gender
df_gender = data.copy()
df_gender['Passengers'] = 1
df = df_gender.pivot_table(index='Sex', values='Passengers', aggfunc='sum')
#Graphic
fig = plt.figure()
axes = fig.add_axes([0, 0, 0.8, 0.8])
axes.pie(x='Passengers', colors=['m', 'b'], autopct="%0.1f%%", data=df, )
axes.set_title('Passengers according \n gender')
axes.legend(bbox_to_anchor=(1, 0.1), labels=['Female', 'Male'])
fig.show()
print(df.sort_values('Passengers', ascending=False))

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.