2017-02-15 3 views
0

ヒートマップスタイルグラフを作成したいデータがMatlabにあります。これを行う通常の方法は、imagescとおそらくカスタムカラーマップです。 (例えば、この質問に関する受け入れられた答え:MATLAB heat mapを参照してください。)しかし、データにNaNが含まれている場合、これは必ずしも私が望むことをするものではありません。 MathWorks Documentationは、NaNの動作が未定義であると主張しています。実際には、その結果は、カラーマップに最小値の色が割り当てられているように見えます。imaginでMatlabでNaNの色を変える方法は?

値が利用できないことを示すNaNがある場合、誤解を招く可能性があります。このショーをカラーマップ内の色以外のものにすることが望ましいでしょう。どうやってするの?

この他の質問(Assign different color to NaN values in Matlab images)には少し似ていますが、私の見解では、重複しているわけではありません。なぜなら、潜在的に独自の基底構造を持つ異なる関数呼び出しを介してイメージを作成するからです。

+0

[この](http://stackoverflow.com/questions/38851267/matlab-imshow-omit-nan/38851344#38851344)に関連する – Suever

答えて

0

これは可能ではないと主張していたMathWorksサイトの多くの回答を実行した後、私は次の解決策を見つけました。必要に応じて各カラーパッチの透明度を変更することができます。デフォルトはすべてを不透明にすることですが、データが透明であるNaNの値を設定します。これは、パッチの色を明示的にカラーマップの外側に設定するのとは異なりますが、図に表示されて混乱の原因となっているものがない場合は効果的です。そのような場合、NaNに対応する領域は、表面の「穴」として見え、軸の背景色を示します。 xyで(それぞれの)所与data変数と軸値のデータで:

h = imagesc(x, y, data); 
h.AlphaData = ones(size(h.CData)); 
h.AlphaData(isnan(h.CData)) = 0; 

最初の行は、画像を作成し、2行目には不透明であるために、すべてのパッチを設定し、最後のセットは、パッチがNaNに対応します透明にする。 2行目は、デフォルトの動作を複製しているにもかかわらず必要です。AlphaDataのデフォルト値はスカラー1ですが、3行目が動作するためには1の行列にする必要があるためです。

関連する問題