Существует ли элегантный способ соединить линию между ближайшими точками на точечной диаграмме?
Причина, по которой я спрашиваю, заключается в том, что plot
соединит линию на основе «индекса строки» Y (данные).По сути, он соединяет точки в одной строке в 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
:
![plot with jump](https://i.stack.imgur.com/MIdwy.png)
Прыжок вызван отсутствием данных, и на практике это неизбежно.
Однако мы можем видеть, что на самом деле есть четыре линии невооруженным глазом,если мы используем scatter
.
![enter image description here](https://i.stack.imgur.com/4DGQV.png)
Так что я хочу достичь, это соединить ближайшие точки, но без прерывистости, учитывая несовершенный набор данных,в котором отсутствуют некоторые данные.Что я могу придумать, так это предварительно обработать данные перед построением графика, но это не всегда возможно из-за сложной экспериментальной ситуации, в которой трудно предсказать, какая точка данных будет пропущена заранее.
Любые комментарии иответы высоко ценятся!