要实现同时缩放的功能,可以使用MATLAB的 linkprop 函数来链接三个axes的属性。这样,在缩放或平移其中一个axes时,其他两个也会相应地进行相同的操作。
function plot_with_3_yaxes(x1, y1, x2, y2, x3, y3)
% 创建一个figure和三个axes
figure;
ax1 = axes;
hold(ax1, 'on');
ax2 = axes;
hold(ax2, 'on');
ax3 = axes;
hold(ax3, 'on');
% 绘制曲线
plot(ax1, x1, y1, 'b');
plot(ax2, x2, y2, 'r');
plot(ax3, x3, y3, 'g');
% 设置第一个y轴和标题
ax1.YColor = 'b';
ax1.Title.String = 'Plot 1';
% 设置第二个y轴
ax2.YColor = 'r';
ax2.YAxisLocation = 'right';
ax2.Color = 'none';
% 设置第三个y轴
ax3.YColor = 'g';
ax3.YAxisLocation = 'right';
ax3.Color = 'none';
% 设置图例
legend(ax1, 'Plot 1');
legend(ax2, 'Plot 2');
legend(ax3, 'Plot 3');
% 设置整体坐标轴标签和标题
xlabel('X');
ylabel(ax1, 'Y1');
ylabel(ax2, 'Y2');
ylabel(ax3, 'Y3');
title('Plot with 3 Y Axes');
% 链接三个y轴
linkaxes([ax1, ax2, ax3], 'x');
% 链接缩放和平移操作
ax_props = {'XLim', 'YLim', 'ZLim', 'CameraPosition', 'CameraTarget', 'CameraUpVector', 'CameraViewAngle', 'XTick', 'YTick', 'ZTick', 'XTickLabel', 'YTickLabel', 'ZTickLabel'};
linkprop([ax1, ax2, ax3], ax_props);
end
在调用 linkaxes 函数链接axes的同时,添加了 linkprop 函数以链接其他的属性,以实现同时缩放的效果。
使用方法与之前相同:
x1 = [1, 2, 3, 4, 5];
y1 = [1, 4, 9, 16, 25];
x2 = [1, 2, 3, 4, 5];
y2 = [2, 4, 6, 8, 10];
x3 = [1, 2, 3, 4, 5];
y3 = [5, 4, 3, 2, 1];
plot_with_3_yaxes(x1, y1, x2, y2, x3, y3);
这样,当你在任一axes上进行缩放或平移操作时,其他两个axes也会同步进行操作。