matlab一个axes实现3个独立y轴,实现同时缩放

要实现同时缩放的功能,可以使用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也会同步进行操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ls1300005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值