2011-09-10 10 views
1

このanswerのヒートマップイメージと似たヒートマップイメージを生成したいと思います。違いは、私が試してみました何0とヒートマップをPythonで生成する

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]) 

これで主要な問題は、私はないチューニンググリッド寸法を作成することができるということですきれいな地図 - 白いスペースの多くは、ストライプ効果/ etcを作ることに終わります。

どちらの場合でも、面倒なポイントの作成を経ることなく、これを行うより良い方法があると思います。

理想的には、六角形をプロットするかどうかにかかわらず(私が上で行ったように)スレッシュホールドにいくらかのメカニズムを望みます。

私は、2つの変数の合計がある値nを超えることができない単純な2変数マルコフ連鎖を持っています。私は初期状態ごとにある確率で配列を持っています。したがってヒートマップは、領域x < n-yで囲まれた三角形になります。

+0

これはこれまでに試したことについて何も言わないかなり複雑な質問です。あなたはPythonをまったく知っていますか?あなたのコードを書く人を探していますか?特に、あなたが試したことに、より多くの詳細をお願いします。正しい方向へのヒントだけ、matplotlibを見てください。 – Vorticity

+0

説明をありがとう。あなたが探しているのは六角形のように見えるので、正しい軌道に乗っています。どのようにグリッドサイズになっていますか?あなたはストライプ効果を言うとき、横縞を意味しますか? – Vorticity

答えて

3

あなたのコードで何をしたいのか分かりません。 私はそれを次のように読んでいます:

"hexbinで2次元画像を表示"

「六角形を表示するためのしきい値設定」の部分は、六角形のmincntパラメータのようです。 ( 'ない場合は、セル内のポイント数がmincntを超えるセルのみを表示する')。より複雑なものについては、x、y、Cからマスクされた配列を生成する必要があります。

これはあなたのやりたいことですか?追加して、あなたの機能に差が

import numpy as np 
import matplotlib.pyplot as plt 

def generate_x_y(prob_map): 
    s = prob_map.shape 
    x, y = np.meshgrid(np.arange(s[0]), np.arange(s[1])) 
    return x.ravel(), y.ravel() 

def heatmap(prob_map): 
    x, y = generate_x_y(prob_map) 
    plt.figure() 
    plt.hexbin(x, y, C=prob_map.ravel()) 

probs = np.random.rand(200, 200) 
heatmap(probs) 
plt.show() 

:その場合は、以下のコードはあなたの出発点を与える必要があります

probs = np.random.rand(200, 200) 
heatmap(probs) 
plt.show() 

は、これらの図で見ることができます:(を含むあなたのコードから ストライプ):私のコードから

enter image description here

(それがあるべきように、単にランダム):

enter image description here

+0

素晴らしい! Cのパラメータのためのドキュメントのより密接な検査は有用でしたか? :)私は、「ヘビン(hexbin)を使って2D画像をプロットする」というqの枠組みは、私がそれを見るのを助けたと思う。ありがとう! – neuronotic

+0

ようこそ。お役に立てて嬉しいです。 :-) – xubuntix

関連する問題