100×100の行列が2つあります
u[0] and u[1]
matplotlib関数を使ってヒートマップを作成するために、0から1までの2つの配列の値を設定しました。 pcolormesh
.
次のものを使って1つのヒートマップを得ることができます。
fig1=plt.pcolormesh(u[0], cmap=plt.cm.jet)
私は自分の2つのヒートマップを置くことができるようにしたい同じ数字なので一緒に見ることができます。これを行うために、2つの配列のグローバル位置を定義します。これは配列の重心を表します
cm[0] and cm[1]
配列のこの相対的なグローバル位置を1つのFigureに実装して、互いに対して自分の配列をプロットする方法を教えてください。
例えば、
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]
その場合、プロットは次のようになります。
私はこれを使うことができると思いました:
plt.pcolormesh(u[0], cm[0], cmap=plt.cm.jet)
plt.pcolormesh(u[1], cm[1], cmap=plt.cm.jet)
しかし plt.pcolormesh
その多くの引数を取りません。
回答:
回答№1は2あなたは正しい軌道に乗っています、あなたはただ見なければなりません のマニュアル pcolormesh
もう少し慎重に。君は できる の面内座標を指定する pcolormesh
:
pcolormesh(X, Y, C)
このマニュアルでは、1次元配列を次のように追加できることも示唆されています。 X
そして Y
だから、あなたは台無しにする必要はありません numpy.meshgrid
.
だからあなたはこのようなことをするべきです:
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)
私達が造ったので X
そして Y
データ配列のインデックスからのデータ、各 "ヒートマップ"のサイズはあなたの例の図よりもずっと小さいですが、これはいくつかのスケーリングで自明に修正することができます。 X
, Y
配列上記のコードの結果: