MATLAB坐标不连续画图
Method1
%注意:该方法语句自 R2019b 版本才开始提供
创建一个包含两个图块的分块图布局,并放置一个跨这两个图块的坐标区对象。在最后的演示中,此坐标区对象将出现在背景中,即显示在另外两个坐标区对象的后面。其 x 轴的一部分将可见,以显示一个长 x 轴。
创建一个 1×2 分块图布局 t,并指定紧凑的图块间距。通过设置图块间距,您可以控制 x 轴上各区间之间的间隙大小。
通过调用 axes 函数并将 t 指定为父对象,创建背景坐标区 bgAx。指定名称-值参数以删除所有刻度并关闭图框。
通过将 bgAx 的 Layout.TileSpan 属性设置为 [1 2],使背景坐标区跨两个图块。
figure
t = tiledlayout(1,2,'TileSpacing','compact');
bgAx = axes(t,'XTick',[],'YTick',[],'Box','off');
bgAx.Layout.TileSpan = [1 2];
在第一个图块中的 bgAx 前面创建一个坐标区对象。绘制 x 和 y,并将 x 轴范围设置为第一个区间:
通过调用 axes 函数并将 t 指定为父对象,创建 ax1。默认情况下,坐标区位于第一个图块中。
在 ax1 中绘制 x 和 y。
调用 xline 函数,以在第一个区间的上限处显示一条垂直虚线。
将 x 轴范围设置为第一个区间 [a b]。
添加轴标签以标识第一个区间。
ax1 = axes(t);
plot(ax1,x,y)
xline(ax1,15,':');
ax1.Box = 'off';
xlim(ax1,[0 15])
xlabel(ax1, 'First Interval')
重复该过程,以创建另一个坐标区对象并针对第二个区间绘图。默认情况下,坐标区出现在第一个图块中。通过将坐标区的 Layout.Tile 属性设置为 2,将其移至第二个图块。然后,链接这两个坐标区,使两个 y 轴的范围匹配。
% Create second plot
ax2 = axes(t);
ax2.Layout.Tile = 2;
plot(ax2,x,y)
xline(ax2,45,':');
ax2.YAxis.Visible = 'off';
ax2.Box = 'off';
xlim(ax2,[45 60])
xlabel(ax2,'Second Interval')
% Link the axes
linkaxes([ax1 ax2], 'y')
引用自:https://ww2.mathworks.cn/help/matlab/creating_plots/graph-with-multiple-x-axes-and-y-axes.html
Method2
通过移动重建x和y的数值的方法截断坐标轴(Broken Axis)
注意:截断符号用文本添加
location_X=5;
t1=text(location_X, 0,'//','sc','BackgroundColor','w','margin',eps, 'fontsize',13);
引用自:https://www.cnblogs.com/kailugaji/p/14526291.html
结合结果: