How to plot four subfigures in one figure? Rather than subplot

10 views (last 30 days)
Yuchi Kang
Yuchi Kang on 4 Apr 2019
Commented: dpb on 4 Apr 2019
Dear all
I want to draw a figure like this. Four subfigures merged into one figure. They are separated by a dashed line. Line 1 to 4 are imported. And X-axis is 0-2 repeatably. Could you please give me any hint? Thanks
微信图片_20190404095013.jpg
  4 Comments
dpb
dpb on 4 Apr 2019
Yeah, the tick labels will have to be written manually to look like that...which will mean writing callback routines if want any of the dynamic stuff to work with changes in xlim, zoom, etc., ...
To do it to make one figure for presentation isn't too terrible but "to do it right" would be a lot of effort, unfortunately.

Sign in to comment.

Accepted Answer

Kelly Kearney
Kelly Kearney on 4 Apr 2019
I think the only slightly difficult part of this would be the modified x-ticks. When I create adjacent axes like this, I prefer to stagger the x axes tick locations between the top and bottom of the axes, like in the following example. Would that work for your case?
mar = 0.1; % margin around axes
nax = 4; % number of axes
xpos = linspace(mar, 1-mar, nax+1);
% Make the axes
for ii = 1:nax
ax(ii) = axes('position', [xpos(ii) mar (1-2*mar)./nax 1-2*mar]);
end
set(ax, 'xlim', [0 2], 'ylim', [0 15], 'ydir', 'reverse', 'box', 'off');
set(ax(2:end), 'ycolor', 'none');
% Stagger x-axes so xticks don't overlap
set(ax(2:2:end), 'xaxisloc', 'top');
% Add a box around all the axes, and dashed lines between them
an = annotation('rectangle', [mar mar 1-2*mar 1-2*mar]);
for ii = 1:3
annotation('line', [xpos(ii+1) xpos(ii+1)], [mar 1-mar], 'linestyle', '--');
end
axisexample.png
  1 Comment
dpb
dpb on 4 Apr 2019
Nicely done for the position calc's; that's cleaner than any I'd ever sat down and coded...consider the snippet stolen! :)

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!