ヒートマップアルゴリズムに関するドキュメントを探しています。私はいくつかの実装を見つけましたが、それらは私が見ているように勾配を計算しません。「ヒット」で計算する代わりに、データポイントを値に関連付けたいと思います。
私が見つけた唯一のリソースは、openheatmap.comのソースコードです。これは素晴らしいことですが、履歴データセットからではなく、その場でグラデーションを作成したいと考えています。
ツイートの世界に似たリアルタイムのヒートマップを作成したいと思っています。
ヒートマップアルゴリズムに関するドキュメントを探しています。私はいくつかの実装を見つけましたが、それらは私が見ているように勾配を計算しません。「ヒット」で計算する代わりに、データポイントを値に関連付けたいと思います。
私が見つけた唯一のリソースは、openheatmap.comのソースコードです。これは素晴らしいことですが、履歴データセットからではなく、その場でグラデーションを作成したいと考えています。
ツイートの世界に似たリアルタイムのヒートマップを作成したいと思っています。
私が受け取った回答から、私自身の結論を集めました。その正確性についてコメントしてください。
したがって、「ヒット」に基づくヒートマップの場合、値が0のピクセルのマトリックスがあります。
[0 0 0]
[0 0 0]
[0 0 0]
ヒットすると、対応する要素がインクリメントされます。
[1 3 2]
[4 1 2]
[0 3 5]
ヒットの代わりに値がある場合は、マトリックスに値を追加します。たとえば、次の例のマトリックスを与える金額を使用してみましょう。
[$ 20.34 $ 42.42 $ 55.23]
[$ 45.87 $ 00.87 $ 03.75]
[$ 08.99 $ 32.05 $ 88.65]
次に、データを正規化します。これにより、次のようになります。
[.897 .973 .984]
[.977 .087 .351]
[.669 .959 .994]
これで、選択したアルゴリズムを使用してこれを広げたりぼかしたりすることができます。ガウスぼかしのように。
次に、これらの値に必要なグラデーションを適用できます。
うーん、(World of Tweetのように)「ヒット」の分散から「ヒートマップ」(ピクセル値の通常のグリッド)を推定したい場合、これを行うための明白な方法は、最初にすべてのピクセルについて数を数えることです。その正確なピクセルでのヒットの数(つまり、グリッドへのヒット位置の量子化)を行い、データに畳み込みフィルター(ガウスフィルターなど)を適用してデータを「ブレンド」します。http://en.wikipedia.org/wiki/Gaussian_blurを参照してください。
OpenGLフラグメントシェーダーを読み取ったり変換したりできる場合は、ここにあります。リアルタイムとは、ヒートマップ値をその場で再計算する必要があることを意味します。
hth!
ツイートの世界をちらっと見ました。各ツイートはその場所に何らかの価値を追加し、すべての場所はおそらく時間の経過とともに指数関数的に減少するようです。これにより、平均的な種類のデータを表示しながら、不規則な時間にデータを追加できるようになります。したがって、マップ内のピクセルごとに次のことを行います。
一定の時間間隔で:出力=出力* 0.99
げっぷが発生した場合:output + = value_of_burp
これらは、マップ内のピクセルごとに個別に適用されます。必要なスミアリングを使用して、値をピクセル全体に広げることができます。同じ値を円に適用することもできます。もちろん、0.99は、気に入ったものが得られるまで手動で調整する必要があります。
指数関数的減衰は、非常にアクティブなピクセルでも有限の出力を持つことを意味します。つまり、安定しています。