MATLAB Answers

0

How to increase contrast of a 3d plot? Should I set colorbar to log scale?

Asked by Xiaohan Du on 9 Sep 2018
Latest activity Answered by Akshay Khadse on 12 Sep 2018
Hi all,
I have the following code to plot a structure with y-displacement as ColorMapData ('node.mat', 'elem.mat', 'phiOri.mat' are attached):
clear; clc;
load('node.mat', 'node');
load('elem.mat', 'elem');
load('phiOri.mat', 'phiOri')
dis = reshape(phiOri(:, 1), [3, 3146]);
dis = dis';
scaleFactor = 1;
pdeplot3D(node, elem, 'ColorMapData', abs(dis(:, 2)));
colormap jet
axis image
The image is like this:
As you can see the majority of displacement are small, thus most of the structure are blue. Is there a way to enhance the contrast, i.e. enhance the display of region [0 0.06], such that change in the colormap are clearer?
I think change colorbar to log scale may achieve what I want, but I don't know how to do this, please help! Thanks in advance!

  0 Comments

Sign in to comment.

1 Answer

Answer by Akshay Khadse on 12 Sep 2018
 Accepted Answer

Instead of modifying the colormap scale, you could take a log of the ColorMapData values to magnify your data variations.
I tried out the following snippet:
pdeplot3D(node, elem, 'ColorMapData', 10+log10(abs(dis(:, 2))));
Please refer to the documentation of the ' colormap ' function if you still need to modify the color scales. You can generate logarithmically spaced vectors by using ' logspace ' and then construct colormap matrices using those.

  0 Comments

Sign in to comment.