Saltar al contenido

Python: creación de un histograma 2D a partir de una matriz numérica

Solución:

Si tiene los datos brutos de los recuentos, puede utilizar plt.hexbin para crear las parcelas para usted (en mi humilde opinión, esto es mejor que una celosía cuadrada): Adaptado del ejemplo de hexbin:

import numpy as np
import matplotlib.pyplot as plt

n = 100000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
plt.hexbin(x,y)

plt.show()

ingrese la descripción de la imagen aquí

Si ya tiene los valores Z en una matriz como menciona, simplemente use plt.imshow o plt.matshow:

XB = np.linspace(-1,1,20)
YB = np.linspace(-1,1,20)
X,Y = np.meshgrid(XB,YB)
Z = np.exp(-(X**2+Y**2))
plt.imshow(Z,interpolation='none')

ingrese la descripción de la imagen aquí

Si no solo tiene la matriz de histograma 2D sino también la (x, y) datos, entonces podría hacer un diagrama de dispersión de la (x, y) puntos y colorea cada punto de acuerdo con su valor de recuento agrupado en la matriz de histograma 2D:

import numpy as np
import matplotlib.pyplot as plt

n = 10000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
xedges, yedges = np.linspace(-4, 4, 42), np.linspace(-25, 25, 42)
hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges))
xidx = np.clip(np.digitize(x, xedges), 0, hist.shape[0]-1)
yidx = np.clip(np.digitize(y, yedges), 0, hist.shape[1]-1)
c = hist[xidx, yidx]
plt.scatter(x, y, c=c)

plt.show()

Ejemplo de diagrama de dispersión de histograma 2D

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *