2017-02-15 90 views
0

我有Matlab的數據,我想創建一個熱圖樣式圖。通常的做法是使用imagesc以及可能的自定義顏色地圖。 (例如,請參閱此問題上接受的答案:MATLAB heat map。)但是,如果數據包含NaN,則這不一定符合我的要求。 MathWorks Documentation聲稱NaN的行爲未定義。在實踐中,結果似乎是顏色被分配了顏色映射中最小值的顏色。如何讓NaN在Matlab中用imagsc顯示不同的顏色?

在NaN標記沒有可用值的情況下,這可能會引起誤解。將該節目作爲顏色映射中的顏色以外的其他節目將是更可取的。怎麼做?

我注意到這個其他問題(Assign different color to NaN values in Matlab images),這有點類似。然而在我看來,這不是重複的,因爲它通過不同的函數調用來創建圖像,可能具有它自己的基礎結構。

+0

還與[this](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; 

第一行創建的圖像,第二行設置所有的補丁是不透明的,並且最後將對應於NaN的補丁透明。儘管複製了默認行爲,但第二行似乎是必需的,因爲AlphaData的默認值是標量1,而我們需要它是第三行的矩陣。

相關問題