contour level appointing problem

1 次查看(过去 30 天)
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

采纳的回答

Asliddin Komilov
Asliddin Komilov 2022-5-7
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 个评论
Asliddin Komilov
Asliddin Komilov 2022-5-8
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.

请先登录,再进行评论。

更多回答(1 个)

Riccardo Scorretti
编辑:Riccardo Scorretti 2022-5-7
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 个评论
Asliddin Komilov
Asliddin Komilov 2022-5-7
编辑:Asliddin Komilov 2022-5-7
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?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Contour Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by