gpt4 book ai didi

matlab - 在两个子图之间画线

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:47 25 4
gpt4 key购买 nike

我有两个 2×n 数组,代表 2d 点。这两个数组绘制在同一个图中,但在两个不同的子图中。对于其中一个数组中的每个点,在另一个数组中都有一个对应点。我想通过从一个子图到另一个子图画一条线来显示这种对应关系。

我找到的解决方案是这样的:

 ah=axes('position',[.2,.2,.6,.6],'visible','off'); % <- select your pos...
line([.1,.9],[.1,.9],'parent',ah,'linewidth',5);

这会在 axes 调用给出的坐标系中绘制一条线。为了让它对我有用,我需要一种方法来更改子图系统和新系统之间的坐标系。有人知道如何做到这一点吗?

也许有不同的方式来做到这一点。如果是这样,我很想知道。

最佳答案

首先,您必须将轴坐标转换为图形坐标。然后你可以使用ANNOTATION在图中画线的函数。

您可以使用 Data space to figure units conversion (ds2nfu)在 FileExchange 上提交。

这是一个代码示例:

% two 2x5 arrays with random data
a1 = rand(2,5);
a2 = rand(2,5);

% two subplots
subplot(211)
scatter(a1(1,:),a1(2,:))
% Convert axes coordinates to figure coordinates for 1st axes
[xa1 ya1] = ds2nfu(a1(1,:),a1(2,:));


subplot(212)
scatter(a2(1,:),a2(2,:))
% Convert axes coordinates to figure coordinates for 2nd axes
[xa2 ya2] = ds2nfu(a2(1,:),a2(2,:));

% draw the lines
for k=1:numel(xa1)
annotation('line',[xa1(k) xa2(k)],[ya1(k) ya2(k)],'color','r');
end

确保您的数据数组大小相等。

编辑: 上面的代码将对当前轴进行数据转换。您也可以针对特定轴执行此操作:

hAx1 = subplot(211);
% ...
[xa1 ya1] = ds2nfu(hAx1, a1(1,:),a1(2,:));

关于matlab - 在两个子图之间画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com