Mostrar mapa de calor con una matriz de matrices – problema con la imagen final / trama
Me gustaría trazar un mapa de calor de imshow, pero la imagen final se ve muy pequeña y desproporcionada. Mis datos representan una distancia medida entre átomos (aproximadamente 10 átomos de una molécula a aproximadamente 30 átomos de otra molécula) y el resultado es una matriz de matrices. Preparé una salida similar para la ilustración, pero mi conjunto de datos original es más grande:
import numpy as np
array1 = np.random.randint(20, size=30)
array2 = np.random.randint(20, size=30)
array3 = np.random.randint(20, size=30)
array4 = np.random.randint(20, size=30)
array5 = np.random.randint(20, size=30)
array6 = np.random.randint(20, size=30)
array7 = np.random.randint(20, size=30)
array8 = np.random.randint(20, size=30)
array9 = np.random.randint(20, size=30)
arrayOfArrays = np.array([array1, array2, array3, array4, array5, array6, array7, array8, array9])
Luego quise hacer un mapa de calor para ver las distancias entre los átomos, por lo que este es mi código:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.imshow(arrayOfArrays, origin='upper')
Esto está aquí porque uso este enfoque para definir xticks e yticks en mi trama original. Aquí modifiqué el código con “len(range(0,30))”, pero en mi trama original hay una cantidad de átomos para los que medí las distancias (algo como n_atoms=len(dataset1)).
n1=len(range(0,30))
n2=len(range(0,9))
tick_interval = 1
ax.set_yticks(np.arange(n2)[::tick_interval])
ax.set_xticks(np.arange(n1)[::tick_interval])
Barra de color
cbar = fig.colorbar(im)
La imagen final creada con este gráfico en particular ya se ve pequeña, pero la imagen con mis datos originales es aún más pequeña y no puedo ver los colores en absoluto.
Agradecería mucho cualquier sugerencia sobre cuál es el problema o qué parte del código debería editarse. Intenté editar el tamaño de la imagen, agregar “interpolación”, “aspecto” …
davy.ai
Una posible solución para aumentar el tamaño de su mapa de calor imshow es ajustar el tamaño de la figura usando el parámetro
figsize
en la funciónplt.subplots()
. Por ejemplo, puedes probar el siguiente código:En este ejemplo, el parámetro
figsize
establece el ancho y alto de la figura en pulgadas (10 pulgadas por 5 pulgadas en este caso).Además, puedes experimentar con diferentes mapas de color y ajustar las propiedades de la barra de color para mejorar la visualización.
Aquí, he utilizado el mapa de color
viridis
y ajusté la rotación y posición de la etiqueta de la barra de color usando la funcióncbar.ax.set_ylabel()
con los argumentosrotation=270
para rotar la etiqueta verticalmente yva= 'bottom'
para mover la etiqueta hacia abajo. También he establecido las etiquetas de los ejes x e y y ajusté su posición usando las funcionesax.xaxis.set_label_coords()
yax.yaxis.set_label_coords()
.