contour level appointing problem

4 Ansichten (letzte 30 Tage)
Asliddin Komilov
Asliddin Komilov am 6 Mai 2022
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

Akzeptierte Antwort

Asliddin Komilov
Asliddin Komilov am 7 Mai 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 Kommentar
Asliddin Komilov
Asliddin Komilov am 8 Mai 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Riccardo Scorretti
Riccardo Scorretti am 7 Mai 2022
Bearbeitet: Riccardo Scorretti am 7 Mai 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 Kommentar
Asliddin Komilov
Asliddin Komilov am 7 Mai 2022
Bearbeitet: Asliddin Komilov am 7 Mai 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Contour Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by