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
Hay distintas maneras de hacer gráficas dentro de Matplotlib, ya vimos pyplot; sin embargo, es muy complicado personalizarla y entrar a ciertos parámetros.
Un objeto define una figura, esa figura es un lienzo en el cual podemos introducir diferentes grá ficas(axes), de las cuales cada una posee sus propios ejes(axis).
La figura representa el todo, dentro de ella vamos a configurar gráficas las cuales contienen diferentes ejes.
Es un poco más complicado, pero en el mismo gráfico podemos personalizarlo mucho mejor.
Pyplot | Object Oriented |
---|---|
Rápido | Mayor personalización |
Fácil | Más código |
Una sola figura | Más amigable a múltiples diagramas |
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x ** 2
Pos. Eje x | Pos. Eje y | Size graph eje x | Size graph eje y |
---|
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.5,0.9])
axes.plot(x,y, 'b')
plt.show()
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.17,0.55,0.4,0.3])
axes.plot(x,y, 'b')
axes2.plot(y,x, 'r:')
axes2.set_facecolor('grey')
plt.show()
Aportes 41
Preguntas 6
Pyplot
Object Oriented
Un objeto define una figura, esa figura es un lienzo en el cual podemos introducir diferentes graficas(axes), de las cuales cada una posee sus propios ejes(axis).
La figura representa el todo, dentro de ella vamos a configurar graficas las cuales contienen diferentes ejes
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x**2
#parametros de axes: [pos eje x, pos eje y, size graph eje x, size graph eje y]
fig = plt.figure() #Objeto
axes = fig.add_axes([0.1, 0.1, 0.5, 0.9]) #Grafica
axes.plot(x,y,'b') #Plot
fig.show()
fig = plt.figure() #Objeto
axes = fig.add_axes([0.1, 0.1, 0.8, 0.9]) #Grafica 1 del Objeto
axes2 = fig.add_axes([0.17, 0.55, 0.4, 0.3]) #Grafica 2 del Objeto
axes.plot(x,y,'b') #Plot 1
axes2.plot(y,x,'r') #Plot 2
axes2.set_facecolor('gray')
fig.show()
Métafora. Las figures, los axes y los gráficos son como: la pared, los recuadros y las fotos.
Hola a tod@s!
Cuando el profe escribe la siguiente sentencia:
axes = fig.add_axes([0.1,0.1,0.8,0.9])
Esto es lo que pasa (leyendo de izquierda a derecha)
El primer valor 0.1, significa que la figura comienza al 10% desde el lado izquierdo, en sentido horizontal (eje x).
El segundo valor 0.1, significa que la figura comienza al 10% desde la parte inferior, en sentido vertical (eje y).
El tercer valor 0.8, establece el ancho de la imagen que se extiende hasta el 80% del lienzo.
El cuarto valor 0.9 establece la altura de la imagen que se extiende hasta el 90% del lienzo.
¡Saludos!
Si “fig.show()” les trae problemas, cambienlo por “plt.show()”
Pyplot
Object Oriented
No sabía que se podía hacer eso. Llevo usando esta librería por años.
La verdad resulta bastante cómodo para ubicar gráficos en el lienzo.
Espero a alguien le sirva esta referencia para entender como se mueven los axes dentro de la figura. esta el código con las coordenadas a usar
Información resumida de esta clase
#EstudiantesDePlatzi
Existen diferentes maneras de generar visualizaciones con Matplotlib
Pyplot es la manera fácil, pero está algo limitada
El método orientado a objetos es algo menos fácil, pero tiene más ventajas y maneras de personalizar la gráfica
Con el método orientado a objetos puedo tener gráficas con dos escalas distintas
Primero debo crear una figura u objeto, que va a ser el lienzo en donde estarán nuestras gráficas
Ahora dentro de nuestro lienzo debemos crear las gráficas que se llamara axes
los dos primeros parámetros al definir el axes hacen referencia a la posición en el lienzo
Los dos siguientes parámetros hacen referencia al tamaño que va a tener la gráfica o el axes dentro del lienzo
El método orientado a objetos para las visualizaciones, parece ser mucho mejor
Dentro de un lienzo están nuestros axes, es decir, las gráficas
Estos axes o gráficas tienen sus respectivos ejes llamados axis
Todo esto con el método orientado a objetos es editable
método orientado a objetos
Un objeto define una figura, esa figura es un lienzo en donde pueden coexistir diferentes graficas(axes), de las cuales cada una posee sus propios ejes(axis)
Básicamente permite empalmar graficas con sus elementos independientes
disclaimer* así lo entendí yo
****notas de la clasde ****
Método orientado a objetos
Hay distintas maneras de hacer gráficas dentro de Matplotlib, ya vimos Pyplot; sin embargo, es muy complicado personalizarla y entrar a ciertos parámetros.
Método orientado a objetos en Matplotlib Un objeto define una figura, esa figura es un lienzo en el cual podemos introducir diferentes gráficas(axes), de las cuales cada una posee sus propios ejes(axis).
La figura representa el todo, dentro de ella vamos a configurar gráficas las cuales contienen diferentes ejes.
Es un poco más complicado, pero en el mismo gráfico podemos personalizarlo mucho mejor.
________________________________________
[1]
0 s
import matplotlib.pyplot as plt
import numpy as np
________________________________________
[2]
0 s
x = np.linspace(0,10,22)
y = x**3
________________________________________
[9]
0 s
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.5,0.9])
axes.plot(x,y,"g-->")
fig.show()
#aca creamos uana figura que es lienzo donde crearemos nuestra grafica o nuetras graficas
# y según las grafica que queramos que son llamadas axes,
#en nuestro lienzo creamos una figura o axes
#con show no nos muestra el objecto --> [<matplotlib.lines.Line2D at 0x7f1ed3b00c10>]
________________________________________
[17]
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.3,0.6,0.4,0.6])
axes.plot(x,y,"g-->")
axes2.plot(y,x,"b--")
fig.show()
#con este parametro podemos hacer dos graficos en mi lienzo, hay es donde estos parametros ([0.1,0.1,0.5,0.9])
#toman sentido, los dos primeros parametros (0.1,0.1) hacen referencia a la posicion en la figura o lienzo
#y los siguientes dos (0.5,0.9) hacen referencia al tamaño del axes
#al cambiar estos valores se modifica la figura al definir lo que queremos hacer en la figura
#asi puedo modificar mis figura cambiando los paramtros de los objectos
#estos son objectos totalmente distintos pero en el mismo lienso
axes2.set_facecolor("gray")
#los cambios que aplicamos aca solo afecto al axes2 y esta es la ventaja de utilzar
#metodos orientada a objectos puedo modificar mis metoosd como mejor me parescan
________________________________________
[ ]
________________________________________
personalizables
cómo podemos ver el método orientada a objectos ofrece muchas cualidades a diferencia de solo utilizar Pyplot, una de ellas es la personalización de los gráficos, modificaciones específicas que yo defina en la figura o el lienzo. un objecto define una figura, esa figura es un lienzo en el cual voy a meter graficas llamadas axes, que pueden tener diferentes ejes (x,y) o una figura tridimensional
axes = fig.add_axes([0.1,0.1,0.8,0.9]) # Los primeros numeros representar los movimientos x, y. Mientras que los dos ultimos representan ancho y altura del axe
reto has 4 graficos usando OOF
#reto has 4 graficos usando OOF
fig = plt.figure()
fig.set_facecolor('0.9')
axes = fig.add_axes([0.1, 0.1, 0.5, 0.8])
axes.pie(x)
axes_2 = fig.add_axes([0.8, 0.1, 0.5, 0.8])
axes_2.plot(y,x, 'c--')
axes_3 = fig.add_axes([0.1, 1, 0.5, 0.8])
axes_3.hist(y, color = 'y')
axes_4 = fig.add_axes([0.8, 1, 0.5, 0.8])
axes_4.boxplot(x)
Yo capto mejor la explicación, de esta manera.
Porque será, no lo sé.
<import matplotlib.pyplot as plt
# Crear una figura y establece el tamaño
figura = plt.figure(figsize=(6, 4))>
La función figure() se utiliza para crear una nueva figura en matplotlib. El argumento opcional figsize se utiliza para establecer el tamaño de la figura en pulgadas. En este caso, la figura tendrá un ancho de 6 pulgadas y un alto de 4 pulgadas.
Puedes establecer el tamaño de la figura en otros formatos como (width, height) en cm, pixels, etc.
Las hojas de papel la podremos colocar en cualquier lugar de cartulina grande y cambiar su tamaño
Crear 2 figuras independientes mostradas en el mismo gráfico
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.2,0.5,0.4,0.3])
axes.plot(x, y, 'b')
axes2.plot(y, x, 'w')
axes2.set_facecolor('gray')
fig.show()
¿Para qué sirven?
Pyplot
Object Oriented
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x ** 2
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.5,0.9])
axes.plot(x,y,'r');
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.2,0.55,0.4,0.3])
axes.plot(x,y,'r');
axes2.plot(y,x,'r');
axes2.set_facecolor('gray')
Que buena clase Maldita sea!!
Graficos como objetos
Da mucha versatilidad el manejar las graficas como objetos usando las figure, las axes y axis, aunque si requiere mas comandos.
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.15,0.55,0.4,0.3])
axes.plot(x,y,'b')
axes.set_facecolor('yellow')
axes2.plot(y,x,'r')
axes2.set_facecolor('gray')
fig.show()
Ocupaba subir la imagen para mis apuntes en JN
Añadiendo color a los graficos con la paleta de colores
la ventaja de el método orientado a objetos es que los subplot pueden ser llamados en partes de código no consecutivas mientras que plt.subplot todos los gráficos deben ser en código continuo
Dejo dos formas de haces subplot con métodos
#1
fig, (axs1 , axs2) = plt.subplots(2)
fig.suptitle(“Axes Plot”)
axs1.plot(x, y)
axs2.plot(y, x)
plt.show()
fig, ax = plt.subplots(2, 2, sharex=‘col’, sharey=‘row’)
fig.suptitle(“Axes Plot”)
ax[0,1].plot(x, y)
ax[1,0].plot(y, x)
plt.show()
Pequeño ejercicio hecho. Muy interesante la personalizacion
aca encontre bastante informacion util de
Pyplot vs Object Oriented Interface
https://matplotlib.org/matplotblog/posts/pyplot-vs-object-oriented-interface/
Notas de Clase
Sí alguien quiere hacer el Ejemplo de Pyplot este es el codigo, antes deben definir a
plt.figure(figsize=(9,7),dpi=100) #Asigna el tamaño del grafico.
plt.plot(a, b,'g-') #Tiempo y velocidad
plt.plot(x, y,'b-')
plt.ylabel("Grafico 1") #Nombre de la grafica en eje y
plt.xlabel("Grafico 2")
plt.grid(True) #rejilla visible.
Una figura (plt.figure) , nos permite crear dentro de ella graficas que pueden tener diferentes, escalas, tamaños y apariencia.
Requiere mas detalle de programación pero podemos presentar nuestros datos con una visualización personalizada.
El ejemple de la clase es :
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,11)
y = x**2
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9])
axes2 = fig.add_axes([0.2,0.55,0.4,0.3])
axes.plot(x,y)
axes2.plot(y,x,‘r’)
axes2.set_facecolor(‘gray’)
Los 2 primeros parámetros de (fig.add_axes) hacen referencia a la posición dentro del lienzo(figura) los otros 2 parámetros son el tamaño del grafico.
Con el método orientado a objetos se hace mucho más fácil y potente la creación de gráficos múltiples.
El hecho de manejar los gráficos en forma independiente al total de la figura lo hacen mucho más amigable para graficar que otros métodos, que necesitan dividir geométricamente el total de la figura para poder ubicar los gráficos.
#graficando dos objetos en una misma figura
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.8,0.9]) #objeto uno ([en los primeros dos números definimos ubicación x e y])
axes2 = fig.add_axes([0.2,0.55,0.4,0.3]) #objeto dos ([en los segundos dos definimos tamaño])
axes.plot(x,y,"b")
axes2.plot(y,x,"r")
axes2.set_facecolor("gray") #una forma de alterar únicamente un objeto y NO todo el entorno
fig.show()
Que buena clase. Quede muy copado con todo lo dado.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?