Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema04

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Próxima revisión Ambos lados, revisión siguiente
clase:iabd:pia:1eval:tema04 [2023/04/17 21:21]
admin [Figura]
clase:iabd:pia:1eval:tema04 [2023/11/23 07:47]
admin [Personalización]
Línea 195: Línea 195:
 ===== Figura ===== ===== Figura =====
 Acabamos de ver como colocar cada gráfica dentro de la figura. Ahora veremos unas cosas mas sobre ella. Acabamos de ver como colocar cada gráfica dentro de la figura. Ahora veremos unas cosas mas sobre ella.
 +
  
 *  Para hacer la figura mas grande solo hay que indicar el tamaño con el argumento ''figsize'' *  Para hacer la figura mas grande solo hay que indicar el tamaño con el argumento ''figsize''
Línea 226: Línea 227:
 Además de ''figure'' y ''axes'', a partir de matplolib 3.4 existe las ''subfigure''. Éstas se pueden usar para poder poner un título común a varios ''axes''. Además de ''figure'' y ''axes'', a partir de matplolib 3.4 existe las ''subfigure''. Éstas se pueden usar para poder poner un título común a varios ''axes''.
  
 +Para ello se usa el método ''subfigures'' , indicando el número de filas y columnas. Este método retornará un array con todas las subfiguras. Cada subfigura será como una nueva figura.
 +
 +<sxh python>
 +subfigure_a,subfigure_b = figure.subfigures(nrows=2, ncols=1)
 +</sxh>
 +
 +Veamos un ejemplo:
  
 <sxh python> <sxh python>
Línea 248: Línea 256:
 </sxh> </sxh>
  
 +{{:clase:iabd:pia:1eval:subfiguras.png?400|}}
  
  
-===== Proyecciones =====+==== Proyecciones ====
 Indicar como es la proyección de los ejes.  Indicar como es la proyección de los ejes. 
  
Línea 276: Línea 285:
 {{:clase:iabd:pia:1eval:figure_proyecciones.png|}} {{:clase:iabd:pia:1eval:figure_proyecciones.png|}}
  
 +
 +==== Clase Figura ====
 +La siguiente clase permite simplificar la creación de ''Axes'' cuando queremos mostrar muchos en forma de matriz con varias columnas y muchas filas.
 +<sxh python>
 +class Figura:
 +  def __init__(self,ncols,naxes,axes_width=6, height_axes=None):
 +    self.ncols=ncols
 +    self.num_axes=naxes
 +    self.nrows=math.ceil(naxes/ncols)
 +    if height_axes==None:
 +      height_axes=axes_width*0.86
 +
 +    self.figure, self.arr_axes = plt.subplots(ncols=self.ncols, nrows=self.nrows, figsize=(axes_width*self.ncols,height_axes*self.nrows),
 +                        layout="constrained")
 +
 +    if isinstance(self.arr_axes, (list, tuple, np.ndarray))==False:
 +      self.arr_axes=np.array([[self.arr_axes]])
 +
 +    for axes in np.array(self.arr_axes).reshape(-1):
 +      self._visible_axes(axes,False)
 +
 +  def get_figure(self):
 +    return self.figure
 +
 +  def get_axes(self,index):
 +    col=index % self.ncols
 +    row=math.ceil((index+1)/self.ncols)-1
 +    axes=self.arr_axes[row,col]
 +    self._visible_axes(axes,True)
 +    return axes
 +
 +  def _visible_axes(self,axes,visible):
 +    axes.get_xaxis().set_visible(visible)
 +    axes.get_yaxis().set_visible(visible)
 +    axes.spines['right'].set_visible(visible)
 +    axes.spines['top'].set_visible(visible)
 +    axes.spines['left'].set_visible(visible)
 +    axes.spines['bottom'].set_visible(visible)
 +</sxh>
 +
 +
 +El uso de la clase es la siguiente. 
 +
 +Imagina que quieres mostrar 10 ''Axes'' en 3 columnas y luego obtiene cada uno de los axes. 
 +
 +<sxh python>
 +figura=Figura(ncols=3,naxes=10)
 +
 +for index in range(0,10):
 +  axes=figura.get_axes(index)
 +</sxh>
 +
 +
 +La ventaja de esta clase es que no te tienes que preocupar del número de filas que va a haber.
 ===== Dibujando en 2D ===== ===== Dibujando en 2D =====
 Ahora veamos una serie de métodos para dibujar en un ''Axes'' o gráfica en 2 dimensiones Ahora veamos una serie de métodos para dibujar en un ''Axes'' o gráfica en 2 dimensiones
Línea 879: Línea 942:
  
 {{:clase:iabd:pia:1eval:ejemplo_spines.png|}} {{:clase:iabd:pia:1eval:ejemplo_spines.png|}}
 +
 +  * Hacer que los ejes estén en el orden //Z// más hacía el fondo:
 +
 +<sxh python>
 +axes.set_axis_below(True)
 +</sxh>
  
 ==== Superficies ==== ==== Superficies ====
clase/iabd/pia/1eval/tema04.txt · Última modificación: 2024/05/11 14:01 por admin