Using a heatmap to display a large value range with detail
Show older comments
I have a matrix composed of a very large data set around ~1000000 elements.
The problem I am facing is that the first half of elements have a tiny value, with the data displaying differences of 1.0E-9, but this data is quite important to the analysis. The second half have difference ranges of 1.0E-3 to 0.5.
I have attempted to plot a heatmap, image and surf graph of the data but am unable to get a resolution good enough to display specific.
Is there a way to display the data that I need? Such that even the smallest change in value is represented just as well as the larger changes?
I have attached the images generated.


Accepted Answer
More Answers (1)
Image Analyst
on 10 Feb 2013
0 votes
One common way to handle this is to take the log of the data before you send it into surf(), image(), or imshow(). That will compress the higher values and expand the lower values, allowing you to see the structure of your data over a greater range.
1 Comment
Image Analyst
on 10 Feb 2013
Regarding your comment about taking the log and getting complex numbers. You can normalize your data to scale it between 1 and 100 so that you don't get values of 0 or less. The visualization should look virtually identical. You might want to look at mat2gray().
Categories
Find more on Color and Styling in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!