Matlab 在两个子地块之间划一条线

Matlab 在两个子地块之间划一条线,matlab,Matlab,我有两个2×n的数组,表示二维点。这两个阵列绘制在同一个图中,但在两个不同的子图中。对于其中一个阵列中的每个点,另一个阵列中都有一个对应的点i。我想通过从一个子地块到另一个子地块画一条线来显示这种对应关系 我找到的解决方案如下: ah=axes('position',[.2,.2,.6,.6],'visible','off'); % <- select your pos... line([.1,.9],[.1,.9],'parent',ah,'linewidth',5); ah=轴(

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

我找到的解决方案如下:

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

ah=轴('position'、[.2、.2、.6、.6]、'visible'、'off');% 一个简单的解决方案是使用figure窗口中的工具栏。只需单击“插入”,然后单击“直线”。

首先必须将轴坐标转换为地物坐标。然后可以使用函数在图形中绘制线

您可以在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,:));

非常感谢。这对我帮助很大!不适用于我:线是从一个子地块绘制到另一个子地块,但它们不链接点。此外,当我调整图形大小时,线条会改变它们的相对位置……我认为这是提交的脚本中的错误@ShaiJust注意到@Shai评论。在应用ds2nfu之前,可能需要为图形设置适当的单位。有趣的是,只有在我根本没有为图形设置units属性的情况下,上面的代码才有效。如果我将其设置为默认值(像素),则线条不会与点对齐。奇怪。。。