2012-02-02 18 views
1

これは単純な作業または繰り返しのようですが、私には負担があります。私はしばらく検索して簡単な答えを見つけませんでした。3次元散布図ヒートマップ

ヒートマップとして表示したい散布図があります。私の値は、次のようになります。

{ (3, 3): 1.7314, (3,4):-6.99, (4,3):-17.3, (4, 4):-100.0 } 

私は1.7314の明るさを有する細胞(3,3)、始まるマトリックスを表示したい、など

私はあなたが与える状況に関するいくつかの質問と回答を見つけましたの2つの次元タプル(X, Y)およびZ各ポイントの値(強度)(x,y,z)のリストは、出現回数約(x, y)によって作成されます。

私はまた、imshowを使ってそのようなプロットを描いていますが、imshowの場合は(3,3)などを落とすと変なことがあります。 1つの方法は、imshowを使用してから、後で軸ラベルを手動で調整することです。しかし、私は誰かのようにハックすることなくこれを解決している必要がありますpylabあまりにも多くの。

これを行うにはどのような方法が最適ですか?

+0

matplotlibを評価しましたか? – Roger

+0

「あなたは(3,3)を落とす」とはどういう意味ですか? –

+0

[散乱データセットを使ってMatPlotLibでヒートマップを生成する]を見てください(http://stackoverflow.com/questions/2369492/generate-a-heatmap-in-matplotlib-using-a-scatter-data-set) 。 – Roger

答えて

2

[OK]を、のはあなたのサンプルデータを使用して簡単な例を試してみましょう:あなたが見る

import numpy as np 
from pylab import * 

data = { (3, 3): 1.7314, (3,4):-6.99, (4, 3):-17.3, (4, 4):-100.0 } 
matrix = np.zeros((5, 5)) 
for (x, y), z in data.items(): 
    matrix[y,x] = z 

imshow(matrix[3:, 3:], origin='lower', interpolation='none', extent=[2.5, 4.5, 2.5, 4.5]) 
show() 

として、あなたはextentを使用して制限を指定することで、軸を制御することができます。 Y軸の場合、下部にoriginを指定すると、デフォルト(Noneの場合)は(-0.5, numcols-0.5, -0.5, numrows-0.5)(左下、右下、上)になります。

また、interpolation='none'も重要です。

+0

ああ、それは私が見つけるのに困っていた「程度」でした。どうもありがとう! – user

+0

実際、 'imshow'の[documentation](http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.imshow)の下に' extent'を使用した例があります。それはちょうどあなたもソースコードを見て必要があります:) –

+0

私は補間を使用する必要があると思う= '最も近い'; 「なし」がクラッシュします。 – user