Trazar histograma 2-D en Python usando Matplotlib

El histograma 2D se utiliza para analizar la relación entre dos variables de datos que tienen una amplia gama de valores. Un histograma 2D es muy similar a un histograma 1D. Los intervalos de clase del conjunto de datos se trazan en los ejes x e y. A diferencia del histograma 1D, se dibuja incluyendo el número total de combinaciones de los valores que ocurren en intervalos de x e y, y marcando las densidades. Es útil cuando hay una gran cantidad de datos en una distribución discreta, y lo simplifica al visualizar los puntos donde las frecuencias si las variables son densas.

Creación de un histograma 2D

La biblioteca Matplotlib proporciona una función incorporada matplotlib.pyplot.hist2d()que se utiliza para crear un histograma 2D. A continuación se muestra la sintaxis de la función:

matplotlib.pyplot.hist2d(x, y, bins=(nx, ny), rango=Ninguno, densidad=Falso, pesos=Ninguno, cmin=Ninguno, cmax=Ninguno, cmap=valor)

Aquí (x, y)especifique las coordenadas de las variables de datos, la longitud de los datos X y las variables Y debe ser la misma. El número de contenedores se puede especificar mediante el atributo bins=(nx, ny)donde nxy nyes el número de contenedores que se utilizarán en las direcciones horizontal y vertical respectivamente. cmap=valuese utiliza para establecer la escala de colores. range=NoneEs un parámetro opcional que se utiliza para establecer el área rectangular en la que se cuentan los valores de datos para el gráfico. density=valuees un parámetro opcional que acepta valores booleanos utilizados para normalizar el histograma.
El siguiente código crea un histograma 2D simple usando matplotlib.pyplot.hist2d()una función que tiene algunos valores aleatorios de x e y:

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
n = 100
x = np.random.standard_normal(n)
y = 3.0 * x 
  
fig = plt.subplots(figsize =(10, 7))
# Creating plot
plot.hist2d(x, y)
plot.title("Simple 2D Histogram")
  
# show plot
plot.show()

Producción:

Personalización del histograma 2D

La matplotlib.pyplot.hist2d()función tiene una amplia gama de métodos que podemos usar para personalizar y crear la trama para una mejor visualización y comprensión.

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
x = np.random.normal(size = 500000)
y = x * 3 + 4 * np.random.normal(size = 500000)
  
fig = plt.subplots(figsize =(10, 7))
# Creating plot
plot.hist2d(x, y)
plot.title("Simple 2D Histogram")
  
# show plot
plot.show()

Producción:

Algunas de las personalizaciones del gráfico anterior se enumeran a continuación:

    Cambiar la escala del contenedor: –

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
x = np.random.normal(size = 500000)
y = x * 3 + 4 * np.random.normal(size = 500000)
  
# Creating bins
x_min = np.min(x)
x_max = np.max(x)
  
y_min = np.min(y)
y_max = np.max(y)
  
x_bins = np.linspace(x_min, x_max, 50)
y_bins = np.linspace(y_min, y_max, 20)
  
fig, ax = plt.subplots(figsize =(10, 7))
# Creating plot
plt.hist2d(x, y, bins =[x_bins, y_bins])
plt.title("Changing the bin scale")
  
ax.set_xlabel('X-axis') 
ax.set_ylabel('X-axis') 
  
# show plot
plt.tight_layout() 
plot.show()

Producción:

    Cambiando la escala de color y agregando barra de color: –

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
x = np.random.normal(size = 500000)
y = x * 3 + 4 * np.random.normal(size = 500000)
  
# Creating bins
x_min = np.min(x)
x_max = np.max(x)
  
y_min = np.min(y)
y_max = np.max(y)
  
x_bins = np.linspace(x_min, x_max, 50)
y_bins = np.linspace(y_min, y_max, 20)
  
fig, ax = plt.subplots(figsize =(10, 7))
# Creating plot
plt.hist2d(x, y, bins =[x_bins, y_bins], cmap = plt.cm.nipy_spectral)
plt.title("Changing the color scale and adding color bar")
  
# Adding color bar
plt.colorbar()
  
ax.set_xlabel('X-axis') 
ax.set_ylabel('X-axis') 
  
# show plot
plt.tight_layout() 
plot.show()

Producción:

    Filtrado de datos:-

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
x = np.random.normal(size = 500000)
y = x * 3 + 4 * np.random.normal(size = 500000)
  
# Creating bins
x_min = np.min(x)
x_max = np.max(x)
  
y_min = np.min(y)
y_max = np.max(y)
  
x_bins = np.linspace(x_min, x_max, 50)
y_bins = np.linspace(y_min, y_max, 20)
  
# Creating data filter
data = np.c_[x, y]
  
for i in range(10000):
    x_idx = random.randint(0, 500000)
    data[x_idx, 0] = -9999
  
data = data[data[:, 0]!=-9999]
  
fig, ax = plt.subplots(figsize =(10, 7))
# Creating plot
plt.hist2d(data[:, 0], data[:, 1], bins =[x_bins, y_bins])
plt.title("Filtering data")
  
ax.set_xlabel('X-axis') 
ax.set_ylabel('X-axis') 
  
# show plot
plt.tight_layout() 
plot.show()

Producción:

    Usando la función matplotlib hexbin: –

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
import random
  
# Creating dataset
x = np.random.normal(size = 500000)
y = x * 3 + 4 * np.random.normal(size = 500000)
  
fig, ax = plt.subplots(figsize =(10, 7))
# Creating plot
plt.title("Using matplotlib hexbin function")
plt.hexbin(x, y, bins = 50)
  
ax.set_xlabel('X-axis') 
ax.set_ylabel('Y-axis') 
  
# show plot
plt.tight_layout() 
plot.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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