/ / Superponer mapas de calor en una parcela en python - python, arrays, matplotlib

Superponer mapas de calor en una parcela en python - python, arrays, matplotlib

Tengo dos matrices de 100x100

u[0] and u[1]

He establecido mis valores de las dos matrices entre 0 y 1 para hacer un mapa de calor usando la función matplotlib pcolormesh.

Puedo obtener un mapa de calor usando:

 fig1=plt.pcolormesh(u[0], cmap=plt.cm.jet)

Pero quiero poder poner mis dos mapas de calor enLa misma figura para que puedan verlos juntos. Para hacer esto, defino una posición global para las dos matrices que describe el centro de masa de las matrices,

cm[0] and cm[1]

¿Cómo puedo implementar esta posición global relativa de las matrices en una figura y trazar mis matrices en relación entre sí?

por ejemplo, si

u[0]=np.array(([0,1,0],[1,1,1],[0,1,0])) is at cm=[10,20]
u[1]=np.array(([0,1,0],[1,1,1],[0,1,0])) is at cm=[40,40]

Entonces la trama en mente sería algo como esto:

parcela de ejemplo

Pensé que podría usar esto:

 plt.pcolormesh(u[0], cm[0], cmap=plt.cm.jet)
plt.pcolormesh(u[1], cm[1], cmap=plt.cm.jet)

pero plt.pcolormesh No acepta tantos argumentos.

Respuestas

2 para la respuesta № 1

Estás en el camino correcto, solo tienes que mirar el manual para pcolormesh Un poco más cuidado. Tú poder especifique las coordenadas en el plano para pcolormesh:

pcolormesh(X, Y, C)

El manual también sugiere que puede agregar arreglos de una dimensión como X y Y, para que no tengas que perder el tiempo con numpy.meshgrid.

Así que deberías hacer algo como esto:

import matplotlib.pyplot as plt
import numpy as np

us = [np.array(([0,1,0],[1,1,1],[0,1,0])), np.array(([0,1,0],[1,1,1],[0,1,0]))]
centers = [[10,20],[40,40]]

plt.figure()
for cm,u in zip(centers,us):
n,m = u.shape
X = np.arange(n+1)
Y = np.arange(m+1)
# center and shift coordinates
X = X - n/2.0 + cm[0]
Y = Y - m/2.0 + cm[1]
plt.pcolormesh(X,Y,u)

Desde que construimos el X y Y Los datos de los índices de la matriz de datos, el tamaño de cada "mapa de calor" es mucho más pequeño que el de su figura de ejemplo, pero esto se puede arreglar de forma trivial con una escala de la escala. X, Y matrices El resultado del código anterior:

resultado