在散点图中最近的点之间是否存在连接直线的优雅方法?
我问的原因是因为plot
将基于Y(data)的“行索引”连接线。基本上,它连接Y中同一行中的点。但是,这有时会导致跳转,这是由于一行中缺少数据(因此,所有后续数据都将被错误标记并移位1,这不能出于某些实际原因应避免使用。)
这是问题的最小实例。
xrange=linspace(-2,2,100);
Y=repmat(-xrange.^2,4,1)+repmat((-4:-1)',1,100);
Y(Y<-5)=0;
for i=1:100
[~,~,v]=find(Y(:,i));
Y(1:length(v),i)=v;
end
Y(Y==0)=nan;
%jump due to missing data
figure;
plot(xrange,Y);
figure;
%from bare eye, we see there are four lines
for i=1:4
scatter(xrange,Y(i,:),'b');
hold on
end
使用plot
的不良结果是:
跳转是由于缺少数据造成的,实际上这是不可避免的。
但是,如果我们使用scatter
,肉眼可以看到实际上有四行。
因此,我要实现的是连接最近的点,但在给定不完善的数据集(缺少某些数据)的情况下,不引入不连续性。我能想到的是在绘制数据之前对数据进行预处理,但是由于实验情况复杂,这并不总是可能的,这很难预先预测哪个数据点会丢失。
任何评论和答案都受到高度赞赏!
答案 0 :(得分:0)
idx = ~isnan(Y)
plot(xrange(idx), Y(idx))
或者更好,因为您知道要摆脱-5以下的所有问题
idx = Y < -5
plot(xrange(idx), Y(idx))