2011-07-19 4 views
3

私は数値の行列を持っています。表示にはDataGridViewが使用されます。私は各セルのBackColorをセルの値に基づいて計算するアルゴリズムが必要です。ですから、DataGridViewを見ると、値の分布全体を視覚的に見ることができます。したがって、近い値を持つセルの色は似ています。DataGridViewに色付けして、セル値の分布全体を視覚的に表示するアルゴリズム

答えて

2

あなたは、たとえば(単なる一例としてのMathematicaのコード、気にしないが、)得ることができます行列の最大値と最小を見つけ、

Hue(a(i,j)) = (a(i,j) - min)/(max - min)) 

に背景の色相を設定します。

a = Table[x + Sin[3 x + y^2], {x, -3, 3, 0.1}, {y, -3, 3, 0.1}]; 
ArrayPlot[a, ColorFunction -> (Hue[(# - min)/(max - min), 1, 1] &)], 
      ColorFunctionScaling->False ] 

enter image description here

編集

ただ、参照として

は、この機能の3Dプロットは、その上の文学の多くがあります

enter image description here

2

である(例えば、 TufteWareBertin

基本的に、あなたが見たいものを決定する必要があります。

  • あなたが同様の値を認識したい場合は、示した@belisariusのようなcolourmap()が良いです。色の分布を見ると、「大丈夫、中央の点は右下の点とほぼ同じ値です」と簡単に分かります。しかし、色を見ると、どの値が他の値よりも高いか、または最大値/最小値がどこにあるかを見ることはできません。色相は直観的な順序はありません。
  • 注文情報を表示する場合は、グレースケールが理想的です。 enter image description here

    ここでは、ローカルおよびグローバルの最大/最小値をすぐに見ることができます。悪い点:彼らは近くにいるときだけ、明るさの値を非常によく比較することができます。中央の色と右下の色を視覚的に比較することはできません。錯視の多くはそれに基づいています。

  • あなたは、ターゲットユーザーは平均男性がいるなら、

最後に(topographic mapsに似て)良いかもしれない明るさのための誘導体を用いて、隣接するセル間の小さな違いを強調したい場合は

、あなたがよ色盲人について考える必要があります。非色盲人でさえ、色を比較するよりも長さを比較する方がずっと優れています。

2

空間充填曲線、空間インデックス、またはツリーマップを調べたいとします。これは2dの複雑さを1dの複雑さに減少させます。多くのヒートマップやマップアプリケーションにも使用されています。 sfcは4分木と同様のデータ構造である。あなたはNickのヒルベルト曲線空間インデックスquadtreeブログを調べたいと思う。また、3Dの複雑さを軽減する可能性もあります。

関連する問題