Matlab - Plot in plot(图中画图)
这是在MATLAB®中创建一个嵌入式图形的示例,可以在另一个图形中显示。
与MATLAB中的“axes”函数相关。
Coding
% Create data
t = linspace(0,2*pi);
t(1) = eps;
y = sin(t);
% Place axes at (0.1,0.1) with width and height of 0.8
figure
handaxes1 = axes('Position', [0.12 0.12 0.8 0.8]);
% Main plot
plot(t, y)
xlabel('t')
ylabel('sin(t)')
set(handaxes1, 'Box', 'off')
% Adjust XY label font
handxlabel1 = get(gca, 'XLabel');
set(handxlabel1, 'FontSize', 16, 'FontWeight', 'bold')
handylabel1 = get(gca, 'ylabel');
set(handylabel1, 'FontSize', 16, 'FontWeight', 'bold')
% Place second set of axes on same plot
handaxes2 = axes('Position', [0.6 0.6 0.2 0.2]);
fill(t, y.^2, 'g')
set(handaxes2, 'Box', 'off')
xlabel('t')
ylabel('(sin(t))^2')
% Adjust XY label font
set(get(handaxes2, 'XLabel'), 'FontName', 'Times')
set(get(handaxes2, 'YLabel'), 'FontName', 'Times')
% Add another set of axes
handaxes3 = axes('Position', [0.25 0.25 0.2 0.2]);
plot(t, y.^3)
set(handaxes3, 'Box','off')
xlabel('t')
ylabel('(sin(t))^3')
代码解释
这段MATLAB代码的作用是创建一个嵌入式子图,其中一个sin(t)的主图被嵌入到两个较小的子图中,每个子图都显示sin(t)的不同幂次方。
首先,通过linspace函数创建一个0到2π之间的均匀分布的时间轴t,然后计算它的sin值作为y。eps函数将t的第一个元素设置为机器精度,以避免在绘图时产生奇怪的结果。
接下来,使用axes函数在新的图形窗口中创建一个名为handaxes1的坐标系,并将其位置设置为[0.12 0.12 0.8 0.8],即相对于图形窗口的左下角为(0.12,0.12),宽度和高度都是0.8。然后在这个坐标系上绘制sin(t)的主图,设置x轴和y轴标签,并将Box属性设置为’off’,以避免边框围绕整个图形。
然后,使用get函数获取当前坐标系的x轴和y轴标签,并使用set函数调整它们的字体大小和字体加粗程度。
接下来,使用axes函数在相同的坐标系上创建一个名为handaxes2的新坐标系,并将其位置设置为[0.6 0.6 0.2 0.2]。然后在这个坐标系上使用fill函数绘制sin(t)的平方图形,设置x轴和y轴标签并将Box属性设置为’off’。最后,使用set函数调整x轴和y轴标签的字体类型。
最后,使用axes函数在相同的坐标系上创建一个名为handaxes3的新坐标系,并将其位置设置为[0.25 0.25 0.2 0.2]。然后在这个坐标系上绘制sin(t)的立方图形,设置x轴和y轴标签并将Box属性设置为’off’。
总之,这段代码演示了如何在MATLAB中创建一个嵌入式子图,并在主图中显示不同的sin(t)幂次方。
图形展示
Reference
MATLAB Plot Gallery - Plot in Plot