0% encontró este documento útil (0 votos)
0 vistas83 páginas

Matplotlib

Matplotlib es una librería de Python ampliamente utilizada para la visualización de datos, que permite crear diversos tipos de gráficos con instrucciones de alto nivel y también ofrece control detallado a bajo nivel. La instalación se puede realizar fácilmente mediante PIP y se puede trabajar con diferentes tipos de backends para generar gráficos en diversas interfaces. Además, Matplotlib permite personalizar gráficos mediante estilos, colores, líneas y textos, facilitando la creación de visualizaciones efectivas.

Cargado por

jhon.nafar
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas83 páginas

Matplotlib

Matplotlib es una librería de Python ampliamente utilizada para la visualización de datos, que permite crear diversos tipos de gráficos con instrucciones de alto nivel y también ofrece control detallado a bajo nivel. La instalación se puede realizar fácilmente mediante PIP y se puede trabajar con diferentes tipos de backends para generar gráficos en diversas interfaces. Además, Matplotlib permite personalizar gráficos mediante estilos, colores, líneas y textos, facilitando la creación de visualizaciones efectivas.

Cargado por

jhon.nafar
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MATPLOTLIB

• Matplotlib ([Link]

El principal propósito de Matplotlib es asistirnos y facilitarnos la tarea de visualización de nuestros datos.

Entre sus puntos fuertes podríamos destacar los siguientes:

- Librería de Python más extendida para realizar gráficas de datos.

- Permite realizar multitud de gráficos a través de sencillas instrucciones de alto nivel, permitiendo a su vez
actuar a más bajo nivel para controlar con detalle todo tipo de aspectos de los mismos.

- Dispone de muchos formatos gráficos de salida para utilizar en artículos, libros, webs, etc.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 1


• Instalación de Matplotlib (i)

Hay diferentes métodos para instalar Matplotlib, pero quizás el más sencillo sea a través del gestor de
paquetes de Python denominado PIP3 ([Link]

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 2


• Instalación de Matplotlib (ii)

Para asegurarnos que hemos instalado bien la librería Matplotlib nos bastaría con tratar de importarla
en un intérprete de Python 3.

En caso de que Matplotlib no esté correctamente instalada aparecería este mensaje:

ModuleNotFoundError: No module named 'matplotlib‘

También podemos consultar la versión que tenemos de Matplotlib:

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 3


• ¿Qué es un Backend?

Python nos ofrece muchas formas de trabajar para elaborar nuestras figuras:

- Desde una Shell de Python, obteniendo las figuras en ventanas generadas a través de los comandos
introducidos.

- Realizando scripts de código que generan imágenes directamente como archivos gráficos.

- Embebiendo código Matplotlib en interfaces gráficas de usuario (GUIs) como wxpython o pygtk dentro de
aplicaciones.

- Generando gráficos dinámicos en páginas web.

El código que necesita escribir el programador para cada uno de esos posibles casos de uso se conoce como
“frontend”, mientras que el código subyacente que sirve de soporte y hace que nuestro frontend funcione
adecuadamente se denomina “backend”.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 4


• Tipos de Backends (i)

User interface backends or Interactive backends: permiten renderizar nuestras figuras en ventanas de ploteado
que sirven como interfaces de usuario interactivas.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 5


• Tipos de Backends (ii)

Hardcopy backends or Non-interactive backends: permiten almacenar nuestras figuras directamente en ficheros
con formato gráfico.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 6


• Configurar el Backend (i)

1. A través del parámetro backend en el fichero matplotlibrc.

plt.e: backend : qt5agg # use pyqt5 with antigrain (agg) rendering

Podemos averiguar donde se encuentra nuestro fichero matplotlibrc usando el propio Shell de Python, a
través de la función matplotlib_fname del paquete matplotlib:

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 7


• Configurar el Backend (ii)

2. Estableciendo la variable de entorno MPLBACKEND.

La declaración de esta variable de entorno tendrá precedencia sobre lo establecido en el fichero de configuración
matplotlibrc.

Podemos conocer el backend actual con la función get_backend() del módulo matplotlib.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 8


• Configurar el Backend (iii)

3. Usando la función use() del paquete Matplotlib.

Nota: Para que surta efecto, la función use() debe ser ejecutada antes de importar el módulo pyplot

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 9


• Ploteado interactivo vs no interactivo (i)

• Permite visualizar en una ventana la imagen o figura generada de forma


automática al utilizar la función plot().
Interactivo
• Podemos ejecutar otros comandos mientras estamos visualizando la
imagen en pantalla.

• La imagen no se dibuja automáticamente en pantalla cuando se utiliza la


función plot() sino que tendremos que utilizar además una llamada a la
función show().
No interactivo
• Mientras la imagen está dibujada en pantalla, la ejecución de comandos
está detenida hasta que la ventana gráfica se cierre de forma manual.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 10


• Ploteado interactivo vs no interactivo (ii)
- Por defecto, el modo interactivo está desactivado.
- Podemos consultar el estado del modo interactivo con la función is_interactive() de Matplotlib:

- Una forma de activar el modo interactivo por defecto es a través del fichero de configuración matplotlibrc:
interactive : True
- Otra manera de activarlo es a través de la función interactive() de Matplotlib.

- También podemos usar las funciones ion() y ioff() del módulo pyplot de Matplotlib.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 11


• Ploteado interactivo vs no interactivo (iii)
IPython Shell

Está diseñado para trabajar de forma interactiva cuando es necesario. No obstante, si vamos a trabajar con
Matplotlib es conveniente indicárselo a través de alguno de los dos siguientes métodos, para aumentar la
compatibilidad entre ambos:
1. Al iniciar IPython:

2. Desde el Shell de IPython mediante la magic function %matplotlib:

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 12


• Sobre los datos a plotear

Todos los datos a plotear deberán ser del tipo array.

Numpy es un paquete que sirve para trabajar con arrays de forma eficiente gracias a que nos proporciona una
enorme cantidad de métodos y funciones aplicables a los mismos que están diseñados y optimizados para el
cálculo científico.

Los arrays en Numpy tienen las siguientes características:

- Son estáticos y homogéneos.

- Son más eficientes en el uso y la gestión de memoria.

- La funciones están implementadas en lenguajes más cercanos al hardware, como C o Fortran, para que se
ejecuten de una forma más eficiente.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 13


• Partes de una figura

- La parte Figure hace referencia a la ventana.


- La parte Axes se refiere a la figura en sí, es decir, la zona donde se dibujan todos los objetos del gráfico.
30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 14
• Interfaces de Matplotlib

A la hora de trabajar con Matplotlib tenemos dos formas de hacerlo:

• Usando el estilo de Matlab.

Matplotlib permite a los usuarios realizar el trabajo con figuras de una forma muy similar a como se hace con
Matlab. Esta forma de trabajar con Matplotlib permite a aquellos usuarios que hayan utilizado Matlab con
anterioridad realizar sus gráficas en Python apenas sin esfuerzo.

• Usando la interfaz de Orientación a Objetos.

Matplotlib también permite realizar gráficas utilizando programación dirigida a objetos, es decir, tratándolas como
objetos, y actuando sobre cada objeto de forma independiente a través de sus atributos y métodos.

• El método recomendado es el segundo ya que es mucho más potente e intuitivo.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 15


• El módulo pyplot

La mayor parte del ploteado de gráficos en Python se suele hacer a través de las funciones incorporadas en el
módulo pyplot del paquete Matplotlib.

Para usar pyplot simplemente tendremos que importarlo:

import [Link] as plt

Pyplot en modo interactivo

La figura generada se muestra y actualiza automáticamente si hacemos cambios en la misma. Esto es así debido a
que las funciones incluidas en pyplot incorporan en su código una llamada a la función draw_if_interactive().

Pyplot en modo no interactivo

La figura generada no se muestra en pantalla hasta que utilicemos la función show() de pyplot, que la dibujará y
además interrumpirá la ejecución hasta que la ventana sea cerrada.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 16


• Ploteado Básico

- Los datos a plotear deberán estar en un array o matriz.

- La función más básica de pyplot que nos permite plotear es plot().

- Si estamos en modo interactivo, la salida de plot() será una ventana con la figura correspondiente. En caso
contrario, para mostrar dicha ventana necesitaremos llamar a la función show().

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 17


• Creación de varias figuras
Por defecto, Matpotlib plotea siempre sobre la ventana o figura activa. Si necesitamos crear nuevas ventanas
adicionales, lo haremos con la función:
[Link](identificador_ventana)
- Identificador_ventana será el identificador de la figura, que podrá ser un número entero o un string.

Si la ventana con la etiqueta ya existe, entonces la pone como activa y por tanto, las siguientes instrucciones se
aplicarán a ella.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 18


• Cerrar una figura o ventana gráfica
Para cerrar una figura o ventana utilizamos la función close() de pyplot:

[Link](): Cierra la figura activa


[Link](identificador_figura): Cierra la figura especificada por identificador_figura
[Link](‘all’): Cierra todas las ventanas

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 19


• Utilizando estilos (i)

[Link]

Matplotlib incorpora por defecto una serie de estilos que nos permiten plotear nuestras figuras con diferentes
estéticas.

Podemos mostrar los estilos disponibles: [Link]

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 20


• Utilizando estilos (ii)
- Establecer o activar un estilo temporalmente:

with [Link](‘nombre_de_estilo’)
[Link](x,y)

- Establecer o activar un estilo para toda la sesión: [Link](‘nombre_de_estilo')

- Restablecer la Runtime Configuration (rc): [Link]()


30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 21
Ejercicio 1: Realizar un script que muestre una gráfica de líneas con los datos 1,9,5,2,7,4 usando el estilo ggplot. Después
restablecer los ajustes por defecto.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 22


Ejercicio 2: Realizar un script que muestre una figura con los diferentes estilos disponibles en Matplotlib.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 23


• Personalizando el color de las líneas
Podemos establecer el color de la línea a través del
parámetro color al llamar a la función plot().

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 24


• Personalizando el estilo y el grosor de las líneas

- Podemos establecer el tipo de línea a través del parámetro linestyle al llamar


a la función plot.

- Podemos establecer el grosor de la línea a través del parámetro linewidth


al llamar a la función plot.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 25


• Marcadores de los datos (i)
Podemos establecer marcadores de los datos en la línea a través del parámetro marker al llamar a la función plot(). También
podemos indicar su tamaño con markersize, así como su color de relleno y de borde con markerfacecolor y markeredgecolor

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 26


• Marcadores de los datos (ii)
Podemos pintar únicamente los marcadores, sin unirlos mediante líneas a través del atributo linestyle de alguna de las
siguientes maneras:

linestyle = ' None'


linestyle = ' '
linestyle = ' '

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 27


• Propiedades del texto
Por norma general, los gráficos también incorporan elementos de texto o etiquetas de texto como el título, los rótulos de los
ejes, la leyenda, etc.
Podemos personalizar todos esos elementos que se basan en texto cambiando algunas de sus propiedades o atributos:
- color = nombre_color
- fontfamily o family = nombre_familia_fuente
Tenemos las siguientes familias genéricas: ‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, y ‘monospace’
[Link]
- fontsize o size = size in points, 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}
- fontstyle or style = {'normal', 'italic', 'oblique'}
- fontweight or weight = {a numeric value in range 0-1000, 'ultralight', 'light', 'normal', 'regular', 'book', 'medium', 'roman',
'semibold', 'demibold', 'demi', 'bold', 'heavy', 'extra bold', 'black'}
- rotation = {angle in degrees, 'vertical', 'horizontal'}
- horizontalalignment or ha = {'center', 'right', 'left'}
- verticalalignment or va = {'center', 'top', 'bottom', 'baseline', 'center_baseline'}

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 28


• Poner título a la figura
Para establecer el título de nuestra gráfica podremos utilizar la función title(titulo, atributos_formato).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 29


Ejercicio 3: Crear un gráfico de líneas con los datos 9,4,7,1,6,7,2. Poner la línea discontinua, con color verde y con
un grosor de tamaño 4. Además, poner estrellas amarillas de tamaño 15 como marcadores de los datos ploteados.
Finalmente añadir un título a la figura en negrita, color rojo y tamaño de fuente 15.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 30


• Personalizando los ejes (i)
Podemos establecer los límites de los ejes con las funciones xlim(menor,mayor) y ylim(menor,mayor).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 31


• Personalizando los ejes (ii)
Podemos poner etiquetas a los ejes a través de las funciones xlabel() e ylabel().

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 32


• Personalizando los ejes (iii)
Podemos establecer una de las siguientes escalas con las funciones de pyplot yscale() y xscale():
- linear: escala lineal. Es la escala por defecto.
- log: escala logarítmica. Esta escala sólo acepta valores positivos. Los valores negativos se pueden tratar de dos
maneras: mask = ignorarlos (valor por defecto)
clip = convertirlos a un valor muy pequeño próximo a 0.
- symlog (symmetrical log). Acepta tanto valores positivos como negativos.
- logit: escala que se usa para datos comprendidos entre 0 y 1 ambos excluidos. Los datos fuera de dicho rango se
tratarán igual que en la escala logarítmica (log) indicando mask o clip.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 33


• Personalizando los ejes (iv)

Podemos cambiar las marcas (ticks) en los ejes x e y con pyplot usando las funciones xticks() e yticks(), cuyo
formato es:

xticks(valores, etiquetas)
yticks(valores, etiquetas)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 34


Ejercicio 4: Crear un gráfico de líneas para plotear la función cos(x) entre -2pi y 2pi. Establecer las correspondientes marcas
para los ejes x e y, además de ponerles etiquetas.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 35


• Mostrar la leyenda

Por defecto, la función legend() automáticamente crea una leyenda con las etiquetas de los elementos ploteados.

Si vamos a mostrar leyenda en nuestra gráfica es conveniente poner una etiqueta a cada instrucción plot(), ya que
en la leyenda se mostrará dicha etiqueta.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 36


• Personalizar la leyenda (i)

- Podemos establecer la ubicación de la leyenda al lugar más apropiado de nuestra gráfica, con el parámetro loc
de la función legend().

- También podemos modificar el tamaño de la fuente con el parámetro fontsize, indicando un valor numérico
para el tamaño en puntos o uno de los siguientes valores:

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 37


• Personalizar la leyenda (ii)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 38


• Grid
Por defecto, Matplotlib no dibuja el grid de la figura. Podemos mostrarlo con la función grid().
Algunos de sus parámetros son color, linestyle y linewidth, que nos permiten establecer el color, el estilo y el
grosor de las líneas del grid respectivamente.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 39


• Una gráfica con múltiples líneas

Podemos plotear varias funciones a la vez en la misma zona (Axes).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 40


Ejercicio 5: En la misma gráfica del ejercicio 4 plotear también la función sin(x) en el mismo rango. Añadir al gráfico un grid y
también una leyenda en la posición que más os guste.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 41


• Matplotlib Orientado a Objetos

Hasta ahora hemos utilizado Matplotlib de una forma similar a como Matlab se comparta a la hora de realizar
gráficas. No obstante, podemos ir un paso más allá, aprovechando que Matplotlib nos permite tratar como
objetos las diferentes zonas que componen una figura, es decir, podemos utilizar programación dirigida a objetos
con Matplotlib.

De mayor a menor nivel tenemos la siguiente jerarquía de objetos:

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 42


• Creación de un objeto Figure y un objeto Axes

- Para crear una instancia de un objeto Figure


usaremos la función figure() de Pyplot.

- Para crear una instancia de un objeto Axes


usaremos la función axes() de Pyplot.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 43


• Ploteado de un gráfico simple de líneas
- Para plotear usaremos el método plot() del objeto Axes.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 44


• Personalizando las líneas

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 45


• Añadiendo título, grid y leyenda al gráfico.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 46


• Cambiando la escala de los ejes
Podemos establecer una de las siguientes escalas con los métodos set_yscale() y set_xscale() del objeto Axes:
- linear: escala lineal. Es la escala por defecto.
- log: escala logarítmica. Esta escala sólo acepta valores positivos. Los valores negativos se pueden tratar de dos
maneras: mask = ignorarlos (valor por defecto)
clip = convertirlos a un valor muy pequeño próximo a 0.
- symlog: symmetrical log. Acepta tanto valores positivos como negativos.
- logit: escala que se usa para datos comprendidos entre 0 y 1 ambos excluidos. Los datos fuera de dicho rango se
tratarán igual que en la escala logarítmica (log) indicando mask o clip.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 47


• Estableciendo los valores y sus etiquetas para los ejes

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 48


• Personalizando las marcas indicadoras principales y secundarias de los ejes

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 49


• Los bordes del gráfico (spines)

Podemos ocultar uno o varios bordes del Axes con la función spines():

[Link](‘borde’, estado)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 50


Ejercicio 6: Utilizando notación Orientada a Objetos crear una figura para plotear mediante líneas las siguientes
funciones:

f1 = 2pi * x2/3 f2 = pi/2 * x2 f3 = 4/3 pi * x2 donde x = [Link](1,10)

Añadir un título a la figura, una leyenda, establecer diferentes marcadores para cada línea y eliminar los bordes
superior y derecho de la gráfica.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 51


• Subplots (i)

Podemos tener diferentes zonas dentro de una misma figura, lo que nos permite plotear varias gráficas que se
pueden tratar de forma independiente dentro de dicha figura.

Una forma de conseguir eso es creando un objeto Figure en el que se añadirán tantos objetos Axes como sea
neccesario.

- [Link](): nos devuelve una instancia del objeto figura, donde podemos añadir una o varias instancias del
objeto Axes.

p.e: fig1 = [Link]() # crea una instancia de un objeto figura en la variable fig1

- add_subplot(): es un método de un objeto tipo figura que nos devuelve una instancia del objeto Axes (área
donde poder mostrar la función o los datos a plotear). Esta función tiene el siguiente formato:

add_subplot(num_filas, num_columnas, num_ploteado_actual)

p.e: ax1 = fig1.add_subplot(2, 2, 1) # crea una instancia de un objeto Axes en la variable ax1
para plotear en la primera zona de la figura fig1, que tendrá
4 áreas de ploteado.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 52


• Subplots (ii)
A continuación vemos un ejemplo donde se crea una figura con cuatro gráficas usando los métodos del objeto Figure.

Nota: si la matriz de gráficas creada con subplot() tiene menos de 10 elementos, podemos abreviar la notación
concatenando los 3 parámetros de dicha función. Por ejemplo: fig1.add_subplot(2,2,4) es equivalente a escribir
fig1.add_subplot(224).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 53


• Subplots (iii)

Otra forma de tener diferentes zonas dentro de una misma figura es a través de la función subplots() de Pyplot.

La función subplots() sin argumentos nos devuelve a la vez una instancia de un objeto Figure y una instancia de un
objeto Axes.

p.e: fig, ax = [Link]()

En este ejemplo la variable fig será una instancia del tipo Figure y la variable ax será una instancia del
tipo Axes.

Si indicamos el número de filas y columnas nos devolverá a la vez una instancia de un objeto Figure y tantas
instancias del objeto Axes como resultado de multiplicar el número de filas por el número de columnas.

p.e: fig1, ax = [Link](2,2)

En este ejemplo la variable fig1 será una instancia del tipo Figure y la variable ax será un array
bidimensional de 2 x 2 instancias del tipo Axes.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 54


• Subplots (iv)

A continuación podemos ver un ejemplo donde se crea una figura con cuatro gráficas usando la función subplots()
de Pyplot.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 55


• Subplots (v)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 56


• Subplots (vi)

La parte correspondiente al objeto Figure es común a todos y tiene sus propios métodos y atributos.

- figsize(ancho, alto): dimensiones de la figura en pulgadas.


- dpi(resolución): es la resolución de la imagen en puntos por pulgada (dots per inch)
- facecolor(color): color de fondo

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 57


• Subplots (vii)

Cada gráfica es independiente y tiene sus propias características independientes, que podemos establecer con los
siguientes métodos:

- set_title(): título para la gráfica

- set_xlabel() y set_ylabel(): etiqueta para el eje x e y respectivamente.

- set_xscale() y set_yscale(): para las escalas del eje x e y respectivamente.

- set_xlim() y set_ylim(): para establecer los límites de cada eje.

- set_xticks() y set_ yticks(): para cambiar las marcas de los ejes.

- grid(): para mostrar el grid en la gráfica.

- legend(): para mostrar la leyenda

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 58


• Subplots (viii)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 59


• Subplots (ix)
Podemos ajustar la distribución de las gráficas de la figura a través de la siguiente función de Pyplot:
plt.subplots_adjust(bottom, top, left, right, hspace, wspace)
donde:
- bottom, top, left, right, indican el espacio que se dejará por cada uno de los lados indicados. Este
espacio se mide en porcentajes. Hay que tener en cuenta que los valores se calculan con respecto a los
bordes del recuadro que encierra a la gráfica.
- hspace, wspace, indican la separación entre los diferentes gráficos de la figura, medido como
porcentaje en relación con el alto y ancho de los gráficos.
p.e: plt.subplots_adjust(bottom=0.1, top = 0.9, left = 0.1, right = 0.95, hspace = 0.25, wspace = 0.25)
En el ejemplo se dejará un 10% del alto de la figura como espacio de separación abajo, el gráfico de la parte
superior terminará en el 90% del alto de la figura contado desde abajo, o lo que es lo mismo, empezará por arriba
dejando un 10% del alto de la figura, se dejará un espacio de un 10% del ancho de la figura como espacio a la
izquierda y la figura más a la derecha terminará al alcanzarse el 95% del ancho total, o lo que es lo mismo, se
dejará un 5% de espacio por la derecha. Además, se dejará una separación en altura entre los gráficos de un 25%
del alto de un gráfico y un 25% de separación a lo ancho entre los gráficos.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 60


• Subplots (x)
plt.subplots_adjust(bottom=0.1, top = 0.9, left = 0.1, right = 0.95, hspace = 0.25, wspace = 0.25)

1 = 100%

0.95 = 95%

0.1 = 10%

1 = 100%
0.25 = 25%
1 = 100%
0.25 = 25% 1 = 100%

0.1 = 10% 0.9 = 90%

punto de referencia
30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 61
• Subplots (xi)

Podemos crear disposiciones irregulares y más complejas añadiendo grids y subgrids a la figura.

Ver documentación oficial: [Link]

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 62


Ejercicio 7: Utilizando notación Orientada a Objetos crear una figura de tamaño 8x10 pulgadas y una resolución de 150 dpi,
que esté dividida en 1 columna y 3 filas para plotear mediante líneas las siguientes funciones:

f1 = sin(x) f2 = cos(x) f3 = tan(x) donde x = 100 puntos en el rango [-pi, pi]

Añadir un título a cada subfigura y uno genérico a la figura. Dejar un espacio de un 5% abajo, un 10% a la izquierda,
un 5% a la derecha y un 10% arriba.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 63


Ejercicio 8: crear una matriz de 2x2 gráficos y graficar las funciones cos(x), sin(x), tan(x) y tanh(x) en cada subplot.
Poner cada subplot con uno de los siguientes estilos: ggplot, seaborn, fivethirtyeight y _classic_test.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 64


• Histograms

hist(datos, num_categorías, atributos_formato)

- num_categorías: indica el número de categorías a mostrar (por defecto 10).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 65


• Bar Charts

bar(coordenadas_eje_x, alturas, atributos_formato)

- coordenadas_eje_x: posición de cada barra en el eje x.

- alturas: altura de cada barra.

- el ancho de cada barra o width es de 0.8 por defecto.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 66


• Pie Charts

pie(valores, etiquetas, atributos_formato)

- valores: frecuencias a mostrar en cada sector.

- etiquetas: etiqueta de cada valor.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 67


• Scatter plots

scatter( x, y, atributos_formato)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 68


• Errorbars

errorbar(valores, errores, atributos_formato)

- errores: array con el error de cada valor.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 69


• Colormaps (i)

En algunos tipos de gráficos podemos establecer el mapa de color que nos interese. Dichos gráficos o elementos
de las figuras que lo permiten, tendrán un atributo cmap para ello.

Podemos ver una referencia de todos los tipos de colormaps en la siguiente web:

[Link]

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 70


• Colormaps (ii)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 71


• Colormaps (iii)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 72


• Contour Plots and Filled Contour Plots (i)

Se puede usar un campo escalar para visualizar una función de dos variables, z = f(x,y), tal que z puede
caracterizarse por sus curvas de nivel (o líneas de contorno) a lo largo de las cuales el valor de f(x,y) es constante.

Antes de la representación, es necesario crear una malla o matriz de puntos en el plano xy para calcular el valor
de z en cada uno de ellos. Para ello, Python dispone de la función meshgrid():

[X, Y] = meshgrid(x,y)

donde x e y son vectores con los valores de esta variables. X es una matriz en la que el vector x se copia en cada
una de sus filas, e Y es una matriz en la que el vector y se copia en cada una de sus columnas. De esta forma,
podemos trabajar con las matrices X e Y para obtener una matriz Z en términos de la función representada y
representarla con una de las siguientes funciones:

contour(X, Y, Z, num_levels, atributos_formato)

contourf(X, Y, Z, num_levels, atributos_formato)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 73


• Contour Plots and Filled Contour Plots (ii)

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 74


• Colorbars

También podemos añadir a la figura una colorbar a la figura a través de la siguiente función:

colorbar(objeto_origen, atributos_formato)

- objeto_origen: es el gráfico a partir del cual obtiene la información de los colores a trasladar a la barra de color.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 75


Ejercicio 9: Utilizando notación Orientada a Objetos crear una figura de tamaño 7x7 pulgadas y una resolución de 125 dpi, para
representar un gráfico de contornos con relleno con los siguientes datos:

x = 1000 puntos equidistantes en el rango [-2pi, 2pi]


y = 1000 puntos equidistantes en el rango [0, 4pi]
z = sin(x) + cos(y)

El número de líneas de contorno a representar será 8.


El mapa de color será ‘Reds’
Añadir una barra de color a la figura.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 76


• Otros gráficos

[Link]

[Link]
s-using-matplotlib-pyplot-figure

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 77


• Plotear imágenes
Pytplot nos permite mostrar imágenes de disco que tenemos guardadas en los formatos gráficos compatibles.
Para ello utiliza las siguientes funciones:
- imread(nombre_imagen): lee la imagen indicada (incluyendo la ruta) y devuelve un array de numpy con su
representación.
- imshow(array_imagen): plotea el array que tiene la representación numérica de la imagen.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 78


• Salvar la figura en un fichero (i)

Podemos consultar la lista de formatos en los que Pyplot nos permite guardar nuestra figura:

- [Link]().canvas.get_supported_filetypes().
Muestra los formatos de salida disponibles para
almacenamiento de figuras.

- [Link]().canvas.get_supported_filetypes_grouped().
Igual que el anterior pero de forma agrupada.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 79


• Salvar la figura en un fichero (ii)

La función de Pyplot que nos permite almacenar la figura en disco es savefig(). Entre sus múltiples parámetros, los
más utilizados son los siguientes:

- fname: nombre del fichero donde almacenar la figura.

- dpi (dots per inch): se corresponde con la resolución que le vamos a dar.

- format: cadena de texto con el formato de salida del archivo

- transparent: es útil si la figura la queremos poner sobre un objeto con color de fondo (p.e. en páginas web).

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 80


Ejercicio 10: Modificar el código del ejercicio 9 para que en lugar de plotear la imagen en pantalla se almacene en un fichero
denominado [Link] en formato png con color de fondo transparente.

30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 81


30 de Septiembre de 2019 Python 3 Avanzado Orientado a Trabajo Científico 82

También podría gustarte