Matplotlib Diagrama de dispersión

Podemos usar el método scatter() en pyplot para dibujar diagramas de dispersión.

La sintaxis del método scatter() es la siguiente:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

Descripción de parámetros:

x,y: matrices de la misma longitud, es decir, los puntos de datos que vamos a dibujar en el diagrama de dispersión, datos de entrada.

s: tamaño del punto, por defecto 20, también puede ser una matriz, cada parámetro de la matriz es el tamaño del punto correspondiente.

c: color del punto, por defecto azul 'b', también puede ser una matriz bidimensional de filas RGB o RGBA.

marker: estilo del punto, por defecto un pequeño círculo 'o'.

cmap: Colormap, por defecto None, escalar o el nombre de un colormap, solo se usa cuando c es una matriz de números de coma flotante. Si no se declara, es image.cmap.

norm: Normalize, por defecto None, el brillo de los datos está entre 0-1, solo se usa cuando c es una matriz de números de coma flotante.

vmin,vmax:: configuración de brillo, se ignora cuando existe el parámetro norm.

alpha:: configuración de transparencia, entre 0-1, por defecto None, es decir, opaco.

linewidths:: longitud del punto de marcado.

edgecolors:: color o secuencia de colores, por defecto 'face', valores opcionales: 'face', 'none', None.

plotnonfinite:: valor booleano, configura si se usan c no finitos (inf, -inf o nan) para dibujar puntos.

**kwargs:: otros parámetros.

El siguiente ejemplo, la función scatter() recibe parámetros de matrices de la misma longitud, uno para los valores del eje x y otro para los valores del eje y:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

plt.scatter(x, y)
plt.show()

El resultado se muestra a continuación:

Establecer el tamaño de los puntos:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.scatter(x, y, s=sizes)
plt.show()

El resultado se muestra a continuación:

Personalizar el color de los puntos:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

plt.scatter(x, y, c=colors)
plt.show()

El resultado se muestra a continuación:

Establecer dos conjuntos de diagramas de dispersión:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#6F9CC9')

plt.show()

El resultado se muestra a continuación:

Usar números aleatorios para configurar el diagrama de dispersión:

Ejemplo

import numpy as np
import matplotlib.pyplot as plt

# seed del generador de números aleatorios
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # establecer color y transparencia

plt.title("EJEMPLO Scatter Test") # establecer título

plt.show()

El resultado se muestra a continuación:

Barra de colores Colormap

El módulo Matplotlib proporciona muchas barras de colores disponibles.

Una barra de colores es como una lista de colores, donde cada color tiene un valor que va de 0 a 100.

A continuación se muestra un ejemplo de barra de colores:

Para configurar la barra de colores se necesita usar el parámetro cmap, cuyo valor predeterminado es 'viridis', y luego los valores de color se establecen como una matriz de 0 a 100.

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.show()

El resultado se muestra a continuación:

Si se desea mostrar la barra de colores, se debe usarplt.colorbar()método:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar()

plt.show()

El resultado se muestra a continuación:

Cambie el parámetro de la barra de colores, establezca cmap aafmhot_r:

Ejemplo

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='afmhot_r')
plt.colorbar()
plt.show()

El resultado se muestra a continuación:

Los valores del parámetro de la barra de colores pueden ser los siguientes:

Nombre del color   Palabras clave reservadas
Accent   Accent_r
Blues   Blues_r
BrBG   BrBG_r
BuGn   BuGn_r
BuPu   BuPu_r
CMRmap   CMRmap_r
Dark2   Dark2_r
GnBu   GnBu_r
Greens   Greens_r
Greys   Greys_r
OrRd   OrRd_r
Oranges   Oranges_r
PRGn   PRGn_r
Paired   Paired_r
Pastel1   Pastel1_r
Pastel2   Pastel2_r
PiYG   PiYG_r
PuBu   PuBu_r
PuBuGn   PuBuGn_r
PuOr   PuOr_r
PuRd   PuRd_r
Purples   Purples_r
RdBu   RdBu_r
RdGy   RdGy_r
RdPu   RdPu_r
RdYlBu   RdYlBu_r
RdYlGn   RdYlGn_r
Reds   Reds_r
Set1   Set1_r
Set2   Set2_r
Set3   Set3_r
Spectral   Spectral_r
Wistia   Wistia_r
YlGn   YlGn_r
YlGnBu   YlGnBu_r
YlOrBr   YlOrBr_r
YlOrRd   YlOrRd_r
afmhot   afmhot_r
autumn   autumn_r
binary   binary_r
bone   bone_r
brg   brg_r
bwr   bwr_r
cividis   cividis_r
cool   cool_r
coolwarm   coolwarm_r
copper   copper_r
cubehelix   cubehelix_r
flag   flag_r
gist_earth   gist_earth_r
gist_gray   gist_gray_r
gist_heat   gist_heat_r
gist_ncar   gist_ncar_r
gist_rainbow   gist_rainbow_r
gist_stern   gist_stern_r
gist_yarg   gist_yarg_r
gnuplot   gnuplot_r
gnuplot2   gnuplot2_r
gray   gray_r
hot   hot_r
hsv   hsv_r
inferno   inferno_r
jet   jet_r
magma   magma_r
nipy_spectral   nipy_spectral_r
ocean   ocean_r
pink   pink_r
plasma   plasma_r
prism   prism_r
rainbow   rainbow_r
seismic   seismic_r
spring   spring_r
summer   summer_r
tab10   tab10_r
tab20   tab20_r
tab20b   tab20b_r
tab20c   tab20c_r
terrain   terrain_r
twilight   twilight_r
twilight_shifted   twilight_shifted_r
viridis   viridis_r
winter   winter_r

Otras extensiones