Breaking the axis of plots
7 views (last 30 days)
Show older comments
How can I do something like this in MATLAB without using any external pagkages or functions? Thanks
1 Comment
Angelo Yeo
on 23 Jun 2023
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
Answers (2)
Star Strider
on 24 Jun 2023
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.
.
0 Comments
Aakash
on 23 Jun 2023
You can refer to this work from matlab file exchange forum: https://www.mathworks.com/matlabcentral/fileexchange/3683-breakxaxis?s_tid=srchtitle_breakxaxis_1
0 Comments
See Also
Categories
Find more on Annotations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!