No tienes acceso a esta clase

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

Método orientado a objetos

4/18
Recursos

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.

image

Diferencias entre Pyplot y Object Oriented

Pyplot Object Oriented
Rápido Mayor personalización
Fácil Más código
Una sola figura Más amigable a múltiples diagramas

Implementar el método orientado a objetos para graficar en Matplotlib

import matplotlib.pyplot as plt
import numpy as np

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

Parámetros de axes:

Pos. Eje x Pos. Eje y Size graph eje x Size graph eje y
  • Utilizamos el concepto de objeto para crear una gráfica más personalizable
fig = plt.figure()
axes = fig.add_axes([0.1,0.1,0.5,0.9])
axes.plot(x,y, 'b')
plt.show()
grafica1.JPG
  • Podemos crear varias gráficas dentro del lienzo llamando el método fig.
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()
grafico2.JPG

Aportes 37

Preguntas 6

Ordenar por:

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

RESUMEN

Método Orientado a Objetos

Pyplot

  • Rápido
  • Fácil
  • Una sola figura

Object Oriented

  • Mayor personalización
  • Más código
  • Más amigable a multiples diagramas

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

  • Creamos los datos a graficar:
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,11)
y = x**2
  • Utilizamos el concepto de objeto para crear una grafica mas personalizable:
#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()
  • Podemos crear varias graficas dentro del lienzo llamando el metodo fig
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)

  1. El primer valor 0.1, significa que la figura comienza al 10% desde el lado izquierdo, en sentido horizontal (eje x).

  2. El segundo valor 0.1, significa que la figura comienza al 10% desde la parte inferior, en sentido vertical (eje y).

  3. El tercer valor 0.8, establece el ancho de la imagen que se extiende hasta el 80% del lienzo.

  4. El cuarto valor 0.9 establece la altura de la imagen que se extiende hasta el 90% del lienzo.

¡Saludos!

Pyplot

  • Rápido, fácil, una sola figura

Object Oriented

  • Mayor personalización
  • Más código
  • Más amigable a multiples diagramas

Si “fig.show()” les trae problemas, cambienlo por “plt.show()”

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.

Analogia

  1. Figura == Cartulina grande
  2. axes == hojas de paples

Las hojas de papel la podremos colocar en cualquier lugar de cartulina grande y cambiar su tamaño

Excelente clase, llevo varios meses haciendo plots y no sabia de la libertad que ofrecía este método
La explicación final de la estructura está muy bien detallada. Yo hace unos meses hice un diplomado de data scients en la universidad y este tema siempre me causó ciertas dificultades, pero ahora es mucho más claro con esta explicación. Saludos!
hace unos días justo necesitaba solapar dos figuras en una, me quebre la cabeza buscando como hacerlo. Super interesante el tema de los axes, a pesar de que sea un poco más difícil esto se compensa con las posibilidades a la hora de graficar

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

4. Método orientado a objetos

¿Para qué sirven?

Pyplot

  • Rápido
  • Fácil
  • Una sola figura

Object Oriented

  • Mayor personalización
  • Más amigable a múltiples diagramas
  • Más código
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()

2

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

  • Un objeto define una figura, una figura define un lienzo donde podrás ingresar o meter gráficos.
  • A las gráficas las llamaras Axes y los axes tendrás diferentes ejes.
  • Los ejes (x,y,z) se llamaran axis.

Sí alguien quiere hacer el Ejemplo de Pyplot este es el codigo, antes deben definir a

  • a = …
  • b = …
  • x = …
  • y = …
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.