MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022)
初始数据图绘制完成后,调用以下代码:
%% 添加局部放大
zp = BaseZoom();
zp.plot;
具体绘制步骤如下:
子坐标系(sub-coordinate system)默认设置:
% theme of inserted axes (sub-axes)
properties
subAxesBox = 'on'
subAxesinsertedLineWidth = 1.2
subAxesTickDirection = 'in'
subAxesBackgroundColor = 'w'
end
例:去除子坐标系并设置线宽为3,具体代码如下:
% theme of inserted axes (sub-axes)
properties
subAxesBox = 'off'
subAxesinsertedLineWidth = 3
subAxesTickDirection = 'in'
subAxesBackgroundColor = 'w'
end
放大区域(the zoomed zone)默认设置:
% theme of the zoomed zone (figures)
properties
rectangleColor = 'k'
rectangleFaceColor = 'none'
rectangleFaceAlpha = 0
rectangleLineStyle = '-'
rectangleLineWidth = 1.2
rectangleInteractionsAllowed = 'none'
end
例:设置放大区域线条颜色及线宽为2,具体代码如下:
% theme of the zoomed zone (figures)
properties
rectangleColor = 'r'
rectangleFaceColor = 'none'
rectangleFaceAlpha = 0
rectangleLineStyle = '-'
rectangleLineWidth = 2
rectangleInteractionsAllowed = 'none'
end
连接线(the connected lines)默认设置:
% theme of the connected lines (figures)
properties
% setting of lines between arrows
figureConnectedLineStyle = ':'
figureConnectedLineColor = 'k'
figureConnectedLineWidth = 1.2
% setting of start arrow
figureConnectedLineStartHeadStyle = 'ellipse' % shape of start arrow
figureConnectedLineStartHeadLength = 3
figureConnectedLineStartHeadWidth = 3
% setting of end arrow
figureConnectedLineEndHeadStyle = 'cback2' % shape of ending arrow
figureConnectedLineEndHeadLength = 7
figureConnectedLineEndHeadWidth = 7
end
例:设置箭头末端形状及颜色,具体代码如下:
% theme of the connected lines (figures)
properties
% setting of lines between arrows
figureConnectedLineStyle = ':'
figureConnectedLineColor = 'r'
figureConnectedLineWidth = 1.2
% setting of start arrow
figureConnectedLineStartHeadStyle = 'ellipse' % shape of start arrow
figureConnectedLineStartHeadLength = 3
figureConnectedLineStartHeadWidth = 3
% setting of end arrow
figureConnectedLineEndHeadStyle = 'ellipse' % shape of ending arrow
figureConnectedLineEndHeadLength = 7
figureConnectedLineEndHeadWidth = 7
end
clc
clear
close all
%%
addpath(genpath(pwd))
% basic plotting
x = linspace(-0.1*pi,2*pi, 30);
y = cell(1, 3);
y{1, 1} = 0.4*sinc(x)+0.8;
y{1, 2} = tanh(x);
y{1, 3} = exp(-sinc(x));
figure(1);
color_ = [0, 114, 189; 126, 47, 142; 162, 20, 47]/255;
ax = axes('Units', 'normalized');
hold(ax, 'on');
box(ax,'on');
set(ax, 'LineWidth', 1.2, 'TickDir', 'in');
for i = 1:3
plot(x, y{1, i}, 'Parent', ax, 'Color', color_(i, :), 'LineWidth', 3)
end
set(gca,'Layer','top','FontSize',14,'Fontname', 'Times New Roman');
% add a zoomed zone
zp = BaseZoom();
zp.plot;
clc
clear
close all
%%
addpath(genpath(pwd))
% basic plotting
tmp_ = 5;
t1 = 0:pi/20:8*pi;
t2 = 8*pi:pi/20:16*pi;
y1_ = exp(-t1/tmp_ );
y2_ = exp(-t1/tmp_ ).*sin(tmp_ *t1);
t = [t1, t2];
y1 = [y1_, fliplr(y1_)];
y2 = [y2_, fliplr(y2_)];
figure(1);
plot(t, y2, 'Color', 'r', 'LineStyle', '-', 'LineWidth', 1.5)
hold on
plot(t, y1, 'Color', 'b', 'LineStyle', ':', 'LineWidth', 1.5)
plot(t, -y1, 'Color', 'b', 'LineStyle', ':','LineWidth', 1.5)
xlim([min(t), max(t)])
set(gca,'Layer','top','FontSize',14,'Fontname', 'Times New Roman');
% add 2 zoomed zones
zp = BaseZoom();
zp.plot;
zp.plot;