¿Cómo hacer la matriz de mapa de color en pantalla completa en Python Matplotlib?
Quería hacer un mapa de contacto utilizando la función sparse.matrix junto con la función colormap del módulo matplotlib de Python. Pude generar el gráfico, pero el mapa de colores 2D se condensa solo en la esquina izquierda independientemente del rango x. ¿Cómo puedo hacer que el mapa de colores 2D se muestre en pantalla completa? Utilicé los siguientes comandos para generar el gráfico:-
trajectory_contacts1 = ContactFrequency(t1, switch1, switch2)
sparse_cm1 = trajectory_contacts1.residue_contacts.sparse_matrix
cm1 = sparse_cm1.todense()
with open('CM-pE42-Ab1-42.dat', 'wb') as f1:
np.savetxt(f1, np.array(cm1), fmt='%.2f1')
# Importar datos desde el archivo
CM1 = np.loadtxt(fname="CM-pE42-Ab1-42_Cluster-1.dat")
# Plot del mapa de contacto para Ab1-42 y pE-Ab3-42
from matplotlib import cm as cmp
cmap = cmp.get_cmap('Spectral_r', 50)
plt.matshow(CM1, cmap=cmap, interpolation='None')
ax = plt.gca()
ax.set_xlabel('Número de residuo', fontsize=12)
ax.set_ylabel('Número de residuo', fontsize=12)
ax.set_aspect('auto')
tick_params(bottom=True, right=True, labelbottom=True, labelright=True)
plt.savefig("CM-pE42-Ab1-42_Cluster-3.png", dpi=300, format="png", bbox_inches='tight')
Aquí está el enlace de Dropbox para el archivo .dat: https://www.dropbox.com/s/zqh4w541s6sohmj/CM-pE42-Ab1-42_Cluster-1.dat?dl=0
Por favor, ayúdeme con las sugerencias para corregir el script y obtener el gráfico 2D en pantalla completa.
davy.ai
El problema con el gráfico actual es que la función
matshow()
ajusta automáticamente los límites del eje para adaptarse a los datos mostrados. Para representar el mapa de colores 2-D en el marco completo, se deben establecer manualmente los límites de x e y del gráfico para abarcar todo el rango de los datos. Esto se puede lograr utilizando las funcionesxlim()
eylim()
del objeto de ejes.Aquí está el código modificado que establece los límites de x e y y guarda el gráfico en el marco completo:
Ten en cuenta que la función
set_ylim()
se utiliza para invertir el eje y, de modo que el gráfico sea consistente con los mapas de contacto convencionales.¡Espero que esto ayude! Avísame si tienes alguna pregunta adicional.