Initial values on the plot

4 views (last 30 days)
stelios loizidis
stelios loizidis on 12 Jan 2022
Answered: Voss on 30 Mar 2022
Hello. I have a matrix X (2X40). In the values of this matrix I apply normalization and matrix Xnorm appear (2X40). Next, I make the contour plot of matrix Xnorm. What I want is for the contour plot to show as a label and the initial values, that is the value found in matrix X. How is this done?
Your help is valuable !!!
  3 Comments
stelios loizidis
stelios loizidis on 12 Jan 2022
For example: X (1,1) =-22.5, X (1,2) =-1.5, X (1,3) =2.00, X(1,4)=-0.05
The contour plot I have concerns matrix Xnorm. What I want is if it is done on the contour plot, to have the initial value before normalization. For example, the first point of the contour plot corresponds to the value X (1,3)=2.00, the second point of the contour plot corresponds to the value X (1,4)=-0.05 and so on. What I want is for the contour plot to show like a label the corresponding value from matrix X.
Biral Pradhan
Biral Pradhan on 30 Mar 2022
I understand, you want modify the default labels in the contour plot to show values corresponding to your original matrix. Currently we are not supporting this feature. I have brought this issue to the notice of the concerned people and it might be considered for a future release.

Sign in to comment.

Answers (1)

Voss
Voss on 30 Mar 2022
Here's an approach that may work for you (an approach taken from this recent answer):
% make up some X:
X = [-22.5 -1.5 2.00 -0.05; -20.5 -0.5 1.00 -4.05];
% calculate X_norm from X:
X_min = min(X(:));
X_max = max(X(:));
X_norm = (X-X_min)/(X_max-X_min);
% create the contour:
[~,h] = contour(X_norm,'ShowText','on');
% make a colorbar to illustrate that the contour values use X_norm (0 to 1):
colorbar();
drawnow() % required
% get the levels used in the contour:
levels_norm = get(h,'LevelList');
% get the corresponding "unnormalized" levels
levels = levels_norm*(X_max-X_min)+X_min;
% get the index of each text's String in the (normalized) levels:
[~,idx] = min(abs(levels_norm-str2double(get(h.TextPrims,'String'))),[],2);
% set each text's String to the corresponding unnormalized level:
for ii = 1:numel(idx)
set(h.TextPrims(ii),'String',num2str(levels(idx(ii))));
end

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!