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

Tutorial de Pyplot - Documentación de Matplotlib 3.1.0

2

Cargado por

Susana Diaz
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)
31 vistas14 páginas

Tutorial de Pyplot - Documentación de Matplotlib 3.1.0

2

Cargado por

Susana Diaz
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
Está en la página 1/ 14

21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.

Versión 3.1.0
Bifurcame en GitHub

casa |  ejemplos |  tutoriales |  API |  contenido » anterior | siguiente | módulos | índice

Guía del usuario » Tutoriales »


Búsqueda rápida
Tutorial de Pyplot Vamos
Una introducción a la interfaz de pyplot. Introducción a pyplot
=============== Tabla de contenido

matplotlib.pyplotes una colección de funciones de estilo de comando Tutorial de Pyplot


que hacen que matplotlib funcione como MATLAB. Cada pyplotfunción Dar formato al estilo de su
realiza algún cambio en una figura: por ejemplo, crea una figura, crea un trama
área de trazado en una figura, traza algunas líneas en un área de Trazar con cadenas de
trazado, decora la trama con etiquetas, etc. palabras clave
Graficar con variables
En matplotlib.pyplotvarios estados se conservan a través de las categóricas
llamadas a funciones, de modo que realiza un seguimiento de cosas Controlar las propiedades
como la figura actual y el área de trazado, y las funciones de trazado se de la línea
dirigen a los ejes actuales (tenga en cuenta que "ejes" aquí y en la Trabajar con múltiples
figuras y ejes
mayoría de los lugares de la documentación se refiere a la parte de los
Trabajando con texto
ejes de una figura y no al término matemático estricto para más de un
Usar expresiones matemáticas
eje).
en el texto
Anotar texto
Nota Ejes logarítmicos y otros no
la API de pyplot es generalmente menos flexible que la API lineales
orientada a objetos. La mayoría de las llamadas a funciones que
Temas relacionados
ve aquí también se pueden llamar como métodos desde un
Axesobjeto. Recomendamos navegar por los tutoriales y ejemplos Resumen de la documentación
para ver cómo funciona. Guía de usuario
Tutoriales
Generar visualizaciones con pyplot es muy rápido: Anterior: Guía de uso
Siguiente: parcelas de
muestra en Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers') Mostrar fuente de página
plt.show()

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 1/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

Quizás se esté preguntando por qué el eje x varía de 0 a 3 y el eje y de 1


a 4. Si proporciona una sola lista o matriz al plot()comando, matplotlib
asume que es una secuencia de valores y, y genera automáticamente los
valores x por usted. Dado que los rangos de Python comienzan con 0, el
vector x predeterminado tiene la misma longitud que y pero comienza con
0. Por lo tanto, los datos x son [0,1,2,3].

plot()es un comando versátil y tomará un número arbitrario de


argumentos. Por ejemplo, para trazar x versus y, puede emitir el
comando:

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 2/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

Formateando el estilo de su gráfico


Para cada par de argumentos x, y, hay un tercer argumento opcional que
es la cadena de formato que indica el color y el tipo de línea del gráfico.
Las letras y los símbolos de la cadena de formato son de MATLAB, y
concatenas una cadena de color con una cadena de estilo de línea. La
cadena de formato predeterminada es 'b-', que es una línea azul sólida.
Por ejemplo, para trazar lo anterior con círculos rojos, emitiría

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')


plt.axis([0, 6, 0, 20])
plt.show()

Consulte la plot()documentación para obtener una lista completa de


estilos de línea y cadenas de formato. El axis()comando en el ejemplo
anterior toma una lista y especifica la ventana gráfica de los ejes.[xmin,
xmax, ymin, ymax]

Si matplotlib se limitara a trabajar con listas, sería bastante inútil para el


procesamiento numérico. Generalmente, usará matrices numpy . De
hecho, todas las secuencias se convierten en matrices numerosas
internamente. El siguiente ejemplo ilustra un trazado de varias líneas con
diferentes estilos de formato en un comando utilizando matrices.

import numpy as np

# evenly sampled time at 200ms intervals


t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 3/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')


plt.show()

Trazar con cadenas de palabras clave


Hay algunos casos en los que tiene datos en un formato que le permite
acceder a variables particulares con cadenas. Por ejemplo, con
numpy.recarrayo pandas.DataFrame.

Matplotlib le permite proporcionar dicho objeto con el dataargumento de


palabra clave. Si se proporciona, puede generar gráficos con las cadenas
correspondientes a estas variables.

data = {'a': np.arange(50),


'c': np.random.randint(0, 50, 50),
'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100

plt.scatter('a', 'b', c='c', s='d', data=data)


plt.xlabel('entry a')
plt.ylabel('entry b')
plt.show()

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 4/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

Graficar con variables categóricas


También es posible crear un gráfico utilizando variables categóricas.
Matplotlib le permite pasar variables categóricas directamente a muchas
funciones de trazado. Por ejemplo:

names = ['group_a', 'group_b', 'group_c']


values = [1, 10, 100]

plt.figure(figsize=(9, 3))

plt.subplot(131)
plt.bar(names, values)
plt.subplot(132)
plt.scatter(names, values)
plt.subplot(133)
plt.plot(names, values)
plt.suptitle('Categorical Plotting')
plt.show()

Controlando las propiedades de la línea


Las líneas tienen muchos atributos que puede establecer: ancho de línea,
estilo de guión, suavizado, etc; ver matplotlib.lines.Line2D. Hay

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 5/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

varias formas de establecer propiedades de línea

Utilice argumentos de palabras clave:

plt.plot(x, y, linewidth=2.0)

Utilice los métodos de establecimiento de una Line2Dinstancia.


plotdevuelve una lista de Line2Dobjetos; ej . En el código a
continuación, supondremos que solo tenemos una línea para que
la lista devuelta tenga una longitud de 1. Usamos el
desempaquetado de tuplas con para obtener el primer elemento de
esa lista:line1, line2 = plot(x1, y1, x2, y2)line,

line, = plt.plot(x, y, '-')


line.set_antialiased(False) # turn off antialiasing

Usa el setp()comando. El siguiente ejemplo utiliza un comando de


estilo MATLAB para establecer varias propiedades en una lista de
líneas. setpfunciona de forma transparente con una lista de
objetos o un solo objeto. Puede usar argumentos de palabras clave
de Python o pares de cadena / valor al estilo MATLAB:

lines = plt.plot(x1, y1, x2, y2)


# use keyword args
plt.setp(lines, color='r', linewidth=2.0)
# or MATLAB style string value pairs
plt.setp(lines, 'color', 'r', 'linewidth', 2.0)

Aquí están las Line2Dpropiedades disponibles .

Propiedad Tipo de valor


alfa flotador
animado [Verdadero | Falso]
antialiased o aa [Verdadero | Falso]
clip_box una instancia de matplotlib.transform.Bbox
clip_on [Verdadero | Falso]
clip_path una instancia de ruta y una instancia de
transformación, un parche
color oc cualquier color matplotlib
contiene la función de prueba de aciertos
dash_capstyle [ 'butt'| 'round'| 'projecting']
dash_joinstyle [ 'miter'| 'round'| 'bevel']
guiones secuencia de encendido / apagado de tinta en puntos

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 6/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

Propiedad Tipo de valor


datos (np.array xdata, np.array ydata)
figura una instancia de matplotlib.figure.Figure
etiqueta cualquier cuerda
estilo de línea o [ '-'| '--'| '-.'| ':'| 'steps'| ...]
ls
ancho de línea o valor flotante en puntos
lw
marcador [ '+'| ','| '.'| '1'| '2'| '3'| '4']
markeredgecolor cualquier color matplotlib
o mec
markeredgewidth valor flotante en puntos
o mew
markerfacecolor cualquier color matplotlib
o mfc
markersize o ms flotador
markevery [Ninguno | entero | (startind, zancada)]
recogedor utilizado en la selección de línea interactiva
pickradius el radio de selección de selección de línea
solid_capstyle [ 'butt'| 'round'| 'projecting']
solid_joinstyle [ 'miter'| 'round'| 'bevel']
transformar una instancia de matplotlib.transforms.Transform
visible [Verdadero | Falso]
xdata np.array
ydata np.array
orden Z cualquier número

Para obtener una lista de propiedades de línea configurables, llame a la


setp()función con una línea o líneas como argumento

In [69]: lines = plt.plot([1, 2, 3])

In [70]: plt.setp(lines)
alpha: float
animated: [True | False]
antialiased or aa: [True | False]
...snip

Trabajar con múltiples figuras y ejes


MATLAB, y pyplot, tienen el concepto de la figura actual y los ejes
actuales. Todos los comandos de trazado se aplican a los ejes actuales.
La función gca()devuelve los ejes actuales (una
https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 7/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

matplotlib.axes.Axesinstancia) y gcf()devuelve la figura actual (


matplotlib.figure.Figureinstancia). Normalmente, no tiene que
preocuparse por esto, porque todo se soluciona detrás de escena. A
continuación se muestra un guión para crear dos subtramas.

def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)


t2 = np.arange(0.0, 5.0, 0.02)

plt.figure()
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.show()

El figure()comando aquí es opcional porque figure(1)se creará de


forma predeterminada, así como subplot(111) se creará de forma
predeterminada si no especifica manualmente ningún eje. El
subplot()comando especifica dónde va de 1 a . Las comas en el
comando son opcionales si . Entonces es idéntico a .numrows, numcols,
plot_numberplot_numbernumrows*numcolssubplotnumrows*numcols<10
subplot(211)subplot(2, 1, 1)

Puede crear un número arbitrario de subtramas y ejes. Si desea colocar


un eje manualmente, es decir, no en una cuadrícula rectangular, use el
axes()comando, que le permite especificar la ubicación donde todos los
valores están en coordenadas fraccionarias (0 a 1). Consulte
Demostración de ejes para ver un ejemplo de cómo colocar ejes
https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 8/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

manualmente y Demostración básica de subparcelas para ver un ejemplo


con muchas subtramas.axes([left, bottom, width, height])

Puede crear varias figuras utilizando varias figure()llamadas con un


número de figura creciente. Por supuesto, cada figura puede contener
tantos ejes y subtramas como desee su corazón:

import matplotlib.pyplot as plt


plt.figure(1) # the first figure
plt.subplot(211) # the first subplot in the fi
plt.plot([1, 2, 3])
plt.subplot(212) # the second subplot in the f
plt.plot([4, 5, 6])

plt.figure(2) # a second figure


plt.plot([4, 5, 6]) # creates a subplot(111) by d

plt.figure(1) # figure 1 current; subplot(2


plt.subplot(211) # make subplot(211) in figure
plt.title('Easy as 1, 2, 3') # subplot 211 title

Puede borrar la cifra actual con clf() y los ejes actuales con cla(). Si le
resulta molesto que los estados (específicamente la imagen, la figura y
los ejes actuales) se mantengan detrás de escena, no se desespere: esto
es solo una envoltura delgada de estado alrededor de una API orientada
a objetos, que puede usar en su lugar ( ver tutorial del artista )

Si está haciendo muchas figuras, debe tener en cuenta una cosa más: la
memoria requerida para una figura no se libera por completo hasta que la
figura se cierra explícitamente con close(). Eliminar todas las
referencias a la figura y / o usar el administrador de ventanas para
eliminar la ventana en la que aparece la figura en la pantalla no es
suficiente, porque pyplot mantiene las referencias internas hasta que
close() se llama.

Trabajar con texto


El text()comando se puede usar para agregar texto en una ubicación
arbitraria, y xlabel(), ylabel()y title() se usan para agregar texto en
las ubicaciones indicadas (consulte Texto en gráficos de Matplotlib para
obtener un ejemplo más detallado)

mu, sigma = 100, 15


x = mu + sigma * np.random.randn(10000)

# the histogram of the data


n, bins, patches = plt.hist(x, 50, density=1, facecolor='g

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 9/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

Todos los text()comandos devuelven una


matplotlib.text.Textinstancia. Al igual que con las líneas anteriores,
puede personalizar las propiedades pasando argumentos de palabras
clave a las funciones de texto o usando setp():

t = plt.xlabel('my data', fontsize=14, color='red')

Estas propiedades se tratan con más detalle en Propiedades y diseño del


texto .

Usar expresiones matemáticas en texto

matplotlib acepta expresiones de ecuaciones TeX en cualquier expresión


de texto. Por ejemplo para escribir la expresiónσi = 15 en el título,
puede escribir una expresión TeX rodeada de signos de dólar:

plt.title(r'$\sigma_i=15$')

Lo ranterior a la cadena del título es importante: significa que la cadena


es una cadena sin formato y no tratar las barras diagonales inversas

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 10/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

como escapes de Python. matplotlib tiene un analizador de expresiones


TeX integrado y un motor de diseño, y envía sus propias fuentes
matemáticas; para obtener más información, consulte Escribir
expresiones matemáticas . Por lo tanto, puede utilizar texto matemático
en todas las plataformas sin necesidad de una instalación de TeX. Para
aquellos que tienen LaTeX y dvipng instalados, también pueden usar
LaTeX para formatear su texto e incorporar la salida directamente en sus
figuras de visualización o posdata guardada; consulte Representación de
texto con LaTeX .

Anotar texto
Los usos del text()comando básico anterior colocan el texto en una
posición arbitraria en los ejes. Un uso común del texto es anotar alguna
característica del gráfico, y el annotate()método proporciona una
funcionalidad auxiliar para facilitar las anotaciones. En una anotación,
hay dos puntos a considerar: la ubicación que se anota representada por
el argumento xyy la ubicación del texto xytext. Ambos argumentos son
(x,y)tuplas.

ax = plt.subplot(111)

t = np.arange(0.0, 5.0, 0.01)


s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)

plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),


arrowprops=dict(facecolor='black', shrink=0.0
)

plt.ylim(-2, 2)
plt.show()

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 11/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

En este ejemplo básico, tanto la xy(punta de flecha) como las xytext


ubicaciones (ubicación del texto) están en coordenadas de datos. Hay
una variedad de otros sistemas de coordenadas que se pueden elegir;
consulte Anotación básica y Anotación avanzada para obtener más
detalles. Se pueden encontrar más ejemplos en Anotación de gráficos .

Ejes logarítmicos y otros no lineales


matplotlib.pyplotadmite no solo escalas de eje lineal, sino también
escalas logarítmicas y logit. Esto se usa comúnmente si los datos
abarcan muchos órdenes de magnitud. Cambiar la escala de un eje es
fácil:

plt.xscale ('registro')

A continuación se muestra un ejemplo de cuatro gráficos con los mismos


datos y diferentes escalas para el eje y.

from matplotlib.ticker import NullFormatter # useful for

# Fixing random state for reproducibility


np.random.seed(19680801)

# make up some data in the interval ]0, 1[


y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))

# plot with various axes scales


plt.figure()

# linear

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 12/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

plt.subplot(221)
plt.plot(x, y)
plt.yscale('linear')
plt.title('linear')
plt.grid(True)

# log
plt.subplot(222)
plt.plot(x, y)
plt.yscale('log')
plt.title('log')
plt.grid(True)

# symmetric log
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthreshy=0.01)
plt.title('symlog')
plt.grid(True)

# logit
plt.subplot(224)
plt.plot(x, y)
plt.yscale('logit')
plt.title('logit')
plt.grid(True)
# Format the minor tick labels of the y-axis into empty st
# `NullFormatter`, to avoid cumbering the axis with too ma
plt.gca().yaxis.set_minor_formatter(NullFormatter())
# Adjust the subplot layout, because the logit one may tak
# than usual, due to y-tick labels like "1 - 10^{-3}"
plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, righ
wspace=0.35)

plt.show()

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 13/14
21/10/2020 Tutorial de Pyplot - documentación de Matplotlib 3.1.0

También es posible agregar su propia escala, consulte la Guía del


desarrollador para crear escalas y transformaciones para obtener más
detalles.

Download Python source code: pyplot.py

Download Jupyter notebook: pyplot.ipynb

© Copyright 2002 - 2012 John Hunter, Darren Dale, Eric Firing, Michael Droettboom y el equipo de desarrollo de Matplotlib; 2012 - 2018 El equipo
de desarrollo de Matplotlib.
Última actualización el 18 de mayo de 2019. Creado con Sphinx 1.8.5. Doc versión v3.1.0-4-g0078324e4.

https://matplotlib.org/3.1.0/tutorials/introductory/pyplot.html 14/14

También podría gustarte