contour level appointing problem

3 views (last 30 days)
Hello everyone!
I appointed the contour level to the minimum value and 0.1 (code below) but in some I get only 0.1 without the minum value. I checked the code, the minimum value is generated everytime bu clabel is not taking it.
(nevermind the dataname, I have delited some parts to keep the privicy)
Please help. Thanks
dataname={'m' 'p' 't' 's' 'C' 'e' 'a' 'D' 'O' };
paramX=coefA;
paramY=coefB;
paramZ=deviNnorm;
paramZ(paramZ==0)=nan;
rowNum=3;
colmNum=3;
fig=figure('color','w');
for pp=1:rowNum*colmNum
subplot (rowNum,colmNum,pp)
[C,h] =contour(paramX,paramY,squeeze(paramZ(pp,:,:)),[0.01:0.01:0.1,0.2:0.4:1],'ShowText','on');hold on; plot(paramX,flip(paramY),'--','color','r');hold off
shows=[round(min(min(squeeze(paramZ(pp,:,:)))),2) 0.1];
clabel(C,h,shows,'FontWeight','bold')
axis([0 1 0 1])
title(dataname(pp))
view (0,90);
end

Accepted Answer

Asliddin Komilov
Asliddin Komilov on 7 May 2022
I have changed the part of the code, but still don't see my minima:
for pp=1:rowNum*colmNum
subplot (rowNum,colmNum,pp)
Zmins=min(min(squeeze(paramZ(pp,:,:))));
[C,h] =contour(paramX,paramY,squeeze(paramZ(pp,:,:)),[Zmins:0.01:Zmins+0.01,0.1:0.1:1],'ShowText','on');hold on; plot(paramX,flip(paramY),'--','color','r');hold off
h.LevelList=round(h.LevelList,4);
shows=[Zmins 0.1 0.2 0.4 0.6 0.8];
clabel(C,h,shows,'FontWeight','bold','LabelSpacing',300)
axis([0 1 0 1])
title(dataname(pp))
view (0,90);
end
HELP! PLEASE! HELP!
  1 Comment
Asliddin Komilov
Asliddin Komilov on 8 May 2022
it is just a guess, but some mimima are just spots and labels don't fit in them, it could be the reason why I matlab doesn't generate them.

Sign in to comment.

More Answers (1)

Riccardo Scorretti
Riccardo Scorretti on 7 May 2022
Edited: Riccardo Scorretti on 7 May 2022
Hi Asliddin,
the problem is that in your own data sometimes the value for which you wish to plot the isovalue does not exist. See this modified version of your program:
load counttest.mat
dataname={'m' 'p' 't' 's' 'C' 'e' 'a' 'D' 'O' };
paramX = coefA;
paramY = coefB;
paramZ = deviNnorm;
paramZ(paramZ==0) = nan;
rowNum = 3;
colmNum = 3;
fig = figure('color','w');
iso = [0.01:0.01:0.10 , 0.2:0.4:1.0];
for pp = 1 : rowNum*colmNum
tmp_ = squeeze(paramZ(pp,:,:));
subplot (rowNum, colmNum, pp)
[C,h] = contour(paramX, paramY, tmp_, iso, 'ShowText', 'on');
hold on; plot(paramX, flip(paramY), 'r--'); % hold off
minval = round(min(tmp_(:)), 2);
shows = [minval 0.1];
if min(tmp_(:)) > shows(1)
fprintf('*** pp = %i : The required value %f doesn''t exist (min = %f) ***\n', ...
pp, shows(1), min(tmp_(:)));
end
clabel(C, h, shows, 'FontWeight', 'bold');
axis([0 1 0 1]);
% title(dataname(pp));
title(num2str(pp));
view (0,90);
end
*** pp = 3 : The required value 0.080000 doesn't exist (min = 0.083007) *** *** pp = 4 : The required value 0.040000 doesn't exist (min = 0.041459) *** *** pp = 5 : The required value 0.080000 doesn't exist (min = 0.083171) *** *** pp = 6 : The required value 0.020000 doesn't exist (min = 0.020750) *** *** pp = 8 : The required value 0.020000 doesn't exist (min = 0.022502) *** *** pp = 9 : The required value 0.010000 doesn't exist (min = 0.012640) ***
The program displays only the isoline corresponding to the value 0.1 in all graphics from 3 to 9. You cannot plot an isovalue corresponding to a value which is less than the minimum (or higher than the maximum) of your data.
  1 Comment
Asliddin Komilov
Asliddin Komilov on 7 May 2022
Edited: Asliddin Komilov on 7 May 2022
Hi,
I have added:
digits(2);
paramZ=vpa(paramZ);
paramZ=single(paramZ);
why your code is giving the same error, where it is getting the 3rd digit out of paramZ?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!