在matlab中连接散点图

时间:2017-03-27 20:13:00

标签: matlab line scatter

我有一个带有点(X,Y坐标)的数据集,它们代表冰川的形状。但是,当我用

绘制它们时
% Import glacier shape

Glaciershape = readtable('dem_glacierlocation.txt');

figure(1);
S = Glaciershape(:,1);
T = Glaciershape(:,2);
plot(S,T,'-')

enter image description here

似乎一个点在他们不需要时连接(见附件,在形状的左上角)。有没有办法来解决这个问题?您可以在下面的链接中下载数据集

谢谢!

Download text file glacier

2 个答案:

答案 0 :(得分:0)

plot将假设每组x,y坐标在一系列中是连续的,并且在没有关注内容的情况下将它们全部绘制出来。

如果您可以对点的分布做出一些假设,那么您可以使用它来打破那些失败的点。例如,系列中的点始终小于前一点的100个单位。否则,这将开始一个新的系列列表。使用它,您可以使用diff检查后续点之间的距离,如下所示:

% assume data stored in xcoord,ycoord
% check for distance greater than 100
idx = find(sqrt(diff(xcoords).^2 + diff(ycoords).^2) > 100 );
% in this particular data set there are 3 disjoint sections
% plot out each section - here each done explicitly for illustration
plot(xcoords(1:idx(1)),ycoords(1:idx(1)));
hold on;
plot(xcoords(idx(1)+1:idx(2)),ycoords(idx(1)+1):idx(2));
plot(xcoords(idx(2)+1:idx(3)),ycoords(idx(2)+1):idx(3));
plot(xcoords(idx(3)+1:end),ycoords(idx(2)+1):end);

编辑:在查看提供的数据文件后添加了其他情节

希望有所帮助...

答案 1 :(得分:0)

如果您正在寻找连接循环中所有点的最短路径,这称为旅行salesman problem,这很难解决。

如果您只想找到一种可视化的简单方法,请尝试:

plot(S,T,'.')

用上面的'。'替换上面的' - '。这将绘制未连接的x,y坐标,你可以让人类大脑进行连接,这是擅长的。

这是没有连接的图像。看起来在顶部有两个区域是洞,这就是连接所有点可能有问题的原因。

enter image description here