この回答にあるようなヒートマップ画像を作成したいと思います。違いは、0から1までの値の2次元配列から実行したいということです。
私が試したこと:
def generate_x_y_vectors(prob_map):
multiplier = 100
xs = []
ys = []
for y in range(len(prob_map)):
for x in range(len(prob_map[y])):
count = int(prob_map[y][x] * multiplier)
xs.extend([x] * count)
ys.extend([y] * count)
return (xs, ys)
def heatmap(probabilities):
#probabilities is a 2d nxn array
n = len(probability_map)
gridsize = n + 1
(xs, ys) = generate_x_y_vectors(probability_map)
plt.figure()
plt.hexbin(xs, ys, C=None, gridsize=gridsize, mincnt=1)
plt.axis([0, n, 0, n])
これに関する主な問題は、グリッドサイズを調整してきれいなマップを作成できないことです。多くの空白がストライプ効果などを作成することになります。
どちらの場合でも、面倒なポイントの生成を経ることなく、これを行うためのはるかに優れた方法があると思います!
理想的には、六角形をプロットするかどうかをしきい値設定するメカニズムが必要です(上記で行ったように)。
私の動機は、2つの変数の合計がある値nを超えることができない単純な2変数マルコフ連鎖を持っていることです。初期条件ごとにある程度の確率の配列があります。したがって、ヒートマップは、領域x<nyで囲まれた三角形になります。