Plot Solid Positive-Valued/Dashed Negative-Valued Contour Plot

조회 수: 16 (최근 30일)
Prince Alex
Prince Alex 2020년 10월 23일
댓글: Star Strider 2022년 9월 27일
How is it possible to plot a contour plot with solid lines for positive values (above zero) and dashed lines for negative values. An example plot is attached.

채택된 답변

Star Strider
Star Strider 2020년 10월 23일
The contour function itself cannot do that, however it is srtaightforward to adapt it:
[X,Y,Z] = peaks;
figure
hold on
[CM,cc] = contour(X,Y,Z,'ShowText','on');
cc.LineStyle = ':';
cc.Color = 'w';
Lvls = cc.LevelList;
PosIdx = find(ismember(CM(1,:),Lvls(Lvls>=0)));
PosLen = CM(2,PosIdx);
NegIdx = find(ismember(CM(1,:),Lvls(Lvls<0)));
NegLen = CM(2,NegIdx);
for k = 1:numel(PosIdx)
IdxRng = PosIdx(k)+1:PosIdx(k)+PosLen(k);
plot(CM(1,IdxRng), CM(2,IdxRng), '-k')
end
for k = 1:numel(NegIdx)
IdxRng = NegIdx(k)+1:NegIdx(k)+NegLen(k);
plot(CM(1,IdxRng), CM(2,IdxRng), '--k')
end
hold off
axis('equal')
producing:
This overplots the original contours so that any text values remain visible (ini case you want them shown).
  댓글 수: 8
doruk isik
doruk isik 2022년 9월 27일
I was just testing different stuff with the code you provided in 2020. If I use it as is, it gives me the following
If I modify the contour handle cc by manually defining the levels as such
[CM,cc] = contour(Xm,Ym,Zm,'ShowText','on');
cc.LineStyle = ':';
cc.Color = 'w';
cc.LevelList=-0.1:0.02:0.1; % this is my addition
Lvls = cc.LevelList;
it gives me the following
Star Strider
Star Strider 2022년 9월 27일
The contour function chooses the contour level values and number of levels itself if they aren’t specified. It likely specifies more contours than the colon operator chooses. To get more of them,, either use a smaller step size than 0.02 or use the linspace function. The colon operator fixes the step increment and lets the length (number of elements) vary. The linspace function fixes the number of elements and varies the step increment.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

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