NumPy Matplotlib

Matplotlib es la biblioteca de gráficos de Python. Se puede usar junto con NumPy, proporcionando una alternativa eficaz de código abierto a MatLab. También puede usarse con kits de herramientas gráficas como PyQt y wxPython.

Instalación con pip3:

pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

Los sistemas Linux también pueden usar el administrador de paquetes de Linux para instalarlo:

  • Debian / Ubuntu:

    sudo apt-get install python-matplotlib
  • Fedora / Redhat:

    sudo yum install python-matplotlib

Después de la instalación, puedes usarpython -m pip listel comando para verificar si el módulo matplotlib está instalado.

$ pip3 list | grep matplotlib
matplotlib        3.3.0  

Ejemplo

Ejemplo

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y) plt.show()

En el ejemplo anterior, la función np.arange() crea los valores en el eje x. Los valores correspondientes en el eje y se almacenan en otro objeto de matriz, y. Estos valores se representan utilizando la función plot() del submódulo pyplot del paquete matplotlib.

La gráfica se muestra mediante la función show().

Visualización de chino en gráficos

De forma predeterminada, Matplotlib no admite chino; podemos usar el siguiente método simple para resolverlo.

Aquí usamos Source Han Sans, una fuente de código abierto creada por Adobe y Google.

Sitio web oficial:https://source.typekit.com/source-han-serif/cn/

Dirección de GitHub:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

Después de abrir el enlace, elige uno de allí:

También puedes descargarlo desde el disco en la nube:https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw, código de extracción:yxqu。

Puedes descargar una fuente OTF, por ejemplo SourceHanSansSC-Bold.otf, y colocar ese archivo en el directorio del código que se está ejecutando:

Coloca el archivo SourceHanSansSC-Bold.otf en el directorio del código que se está ejecutando:

Ejemplo

import numpy as np from matplotlib import pyplot as plt import matplotlib # fname es la ruta de la fuente que descargaste; ten en cuenta la ruta de la fuente SourceHanSansSC-Bold.otf zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf") x = np.arange(1,11) y = 2 * x + 5 plt.title("Tutorial de novatos - Prueba", fontproperties=zhfont1) # fontproperties configura la visualización de chino, fontsize configura el tamaño de la fuente plt.xlabel("eje x", fontproperties=zhfont1) plt.ylabel("eje y", fontproperties=zhfont1) plt.plot(x,y) plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

Además, también podemos usar las fuentes del sistema:

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)

Imprime todos los nombres registrados en ttflist de tu font_manager, busca una fuente que admita chino, por ejemplo: STFangsong (FangSong), y luego agrega el siguiente código:

plt.rcParams['font.family']=['STFangsong']

Como alternativa a la gráfica lineal, se pueden mostrar valores discretos agregando una cadena de formato a la función plot(). Se pueden usar los siguientes caracteres de formato.

Carácter Descripción
'-' Estilo de línea sólida
'--' Estilo de guiones
'-.' Estilo de línea de puntos y rayas
':' Estilo de línea discontinua
'.' Marcador de punto
',' Marcador de píxel
'o' Marcador de círculo
'v' Marcador de triángulo invertido
'^' Marcador de triángulo
'<' Marcador de triángulo hacia la izquierda
'>' Marcador de triángulo hacia la derecha
'1' Marcador de flecha hacia abajo
'2' Marcador de flecha hacia arriba
'3' Marcador de flecha hacia la izquierda
'4' Marcador de flecha hacia la derecha
's' Marcador de cuadrado
'p' Marcador de pentágono
'*' Marcador de estrella
'h' Marcador de hexágono 1
'H' Marcador de hexágono 2
'+' Marcador de signo más
'x' Marcador de X
'D' Marcador de rombo
'd' Marcador de rombo estrecho
'|' Marcador de línea vertical
'_' Marcador de línea horizontal

A continuación se muestran las abreviaturas de colores:

Carácter Color
'b' Azul
'g' Verde
'r' Rojo
'c' Cian
'm' Magenta
'y' Amarillo
'k' Negro
'w' Blanco

Para mostrar círculos que representen puntos, en lugar de la línea del ejemplo anterior, usa 'ob' como cadena de formato en la función plot().

Ejemplo

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y,"ob") plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

Dibujar onda sinusoidal

El siguiente ejemplo utiliza matplotlib para generar una gráfica de onda sinusoidal.

Ejemplo

import numpy as np import matplotlib.pyplot as plt # Calcula las coordenadas x e y de los puntos en la curva del seno x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("sine wave form") # Usa matplotlib para dibujar los puntos plt.plot(x, y) plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

subplot()

La función subplot() te permite dibujar diferentes cosas en la misma figura.

El siguiente ejemplo dibuja los valores del seno y del coseno:

Ejemplo

import numpy as np import matplotlib.pyplot as plt # Calcula las coordenadas x e y de los puntos en las curvas del seno y el coseno x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # Crea una cuadrícula de subplots, con altura 2 y anchura 1 # Activa el primer subplot plt.subplot(2, 1, 1) # Dibuja la primera imagen plt.plot(x, y_sin) plt.title('Sine') # Activa el segundo subplot y dibuja la segunda imagen plt.subplot(2, 1, 2) plt.plot(x, y_cos) plt.title('Cosine') # Muestra la imagen plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

bar()

El submódulo pyplot proporciona la función bar() para generar gráficas de barras.

El siguiente ejemplo genera una gráfica de barras a partir de dos conjuntos de matrices x e y.

Ejemplo

from matplotlib import pyplot as plt x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Bar graph') plt.ylabel('Y axis') plt.xlabel('X axis') plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

numpy.histogram()

La función numpy.histogram() es una representación gráfica de la distribución de frecuencias de los datos. Los rectángulos de igual tamaño horizontal corresponden a los intervalos de clase, llamados bins, y la variable height corresponde a la frecuencia.

La función numpy.histogram() toma como dos parámetros la matriz de entrada y los bins. Los elementos consecutivos de la matriz de bins se utilizan como límites de cada bin.

Ejemplo

import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a,bins = [0,20,40,60,80,100]) hist,bins = np.histogram(a,bins = [0,20,40,60,80,100]) print (hist) print (bins)

El resultado de salida es:

[3 4 5 2 1]
[  0  20  40  60  80 100]

plt()

Matplotlib puede convertir la representación numérica de un histograma en una gráfica. La función plt() del submódulo pyplot toma como parámetro una matriz que contiene los datos y la matriz de bins, y la convierte en un histograma.

Ejemplo

from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("histogram") plt.show()

El resultado de la ejecución se muestra en la siguiente figura:

Matplotlib más contenido de referencia:

Otras extensiones