Breaking the axis of plots

조회 수: 3 (최근 30일)
HC98
HC98 2023년 6월 23일
답변: Star Strider 2023년 6월 24일
How can I do something like this in MATLAB without using any external pagkages or functions? Thanks
  댓글 수: 1
Angelo Yeo
Angelo Yeo 2023년 6월 23일
Why don't you take a look at the post below and see one of answers?
https://kr.mathworks.com/matlabcentral/answers/42537-break-in-the-axis

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

답변 (2개)

Star Strider
Star Strider 2023년 6월 24일
Perhaps this —
x = [linspace(0, 10, 21); linspace(40, 42.5, 21)]; % Create Data
y = [sin(x(1,:)*2*pi*0.11); sin(x(2,:)*2*pi*0.15+2.6)]; % Create Data
figure
subplot(1,2,1)
plot(x(1,:), y(1,:)) % Plot First Group
Ax1 = gca;
yt = Ax1.YTick; % Get Y-Tick Values
tl = Ax1.TickLength(1)*20;
yl1 = ylim;
hold on
plot(([0;tl]*ones(size(yt))), [1;1]*yt, '-k') % Create New Y-Yicks
hold off
% grid
Ax1.YAxis.Visible = 0; % Turn Off Y-Axis
xline(0)
text(zeros(size(yt))-0.05*diff(xlim), yt, compose('%.1f',yt), 'Vert','middle', 'Horiz','right') % Label New Ticks
text(max(xlim)*[1 1]-0.04, [min(ylim) max(ylim)], '/')
subplot(1,2,2)
plot(x(2,:), y(2,:)) % Plot Second Group
% grid
ylim(yl1)
Ax2 = gca;
Ax2.YAxis.Visible = 'off'; % Turn Off Y-Axis
xline(max(xlim), '-k')
hold on
plot((max(xlim)-[0;tl*0.25]*ones(size(yt))), [1;1]*yt, '-k') % Create New Y-Yicks
hold off
text(max(xlim)+zeros(size(yt))+0.15*diff(xlim), yt, compose('%.1f',yt), 'Vert','middle', 'Horiz','right') % Label New Ticks
text(min(xlim)*[1 1]-0.05, [min(ylim) max(ylim)], '/')
This is not at all robust and will likely require tweaking with different data. The File Exchange functions are likely better, since I would assume that they are designed to be more robust.
This is a slightly more sophisticated version of my earlier effort.
.

Aakash
Aakash 2023년 6월 23일

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

태그

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by