объединяя точки точечного графика и создавая линию - PullRequest
2 голосов
/ 16 февраля 2010

Как можно объединить точки точечного графика после построения и создать линию из точечного графика?

Ответы [ 4 ]

5 голосов
/ 16 февраля 2010

Полагаю, вы сгенерировали график рассеяния из x и y координат по

plot(x,y,'.');

Присоединяйтесь к ним с

plot(x,y,'.');
hold on;
plot(x,y,'-');

или одной командой

plot(x,y,'.-');

Это то, что вы хотели?

3 голосов
/ 16 февраля 2010

Если у вас есть существующий график в виде точечного графика, вы не можете просто соединить точки, не зная, какие точки связаны с какими другими.

Если вы знаете порядок / связность точек, то вы могли бы просто использовать функцию заговора, чтобы сделать это в первую очередь. Звонок

plot(x,y,'-')

соединит точки с прямыми отрезками. Если вы хотите использовать символ маркера в каждой точке вдоль линии, то вы можете добавить один из маркеров, который позволяет график, как это:

plot(x,y,'o-')

Вы можете получить список разрешенных маркеров от

help plot

Если вы использовали разброс на множестве точек и теперь хотите наложить линию, соединяющую точки, то используйте функцию удержания, чтобы заставить matlab наносить поверх графика разброса. Например,

scatter(x,y)
hold on
plot(x,y,'-')
hold off

Опять же, любой из этих вариантов требует, чтобы вы знали связь между точками. Существуют некоторые схемы, которые иногда могут восстановить эту связь из списка изолированных точек. Один из этих методов называется CRUST , часто используемый для трехмерной реконструкции поверхности. Я нашел много ссылок простым поиском «алгоритма коры».

1 голос
/ 20 февраля 2017

Чтобы ответить на вопрос, как это сделать в Maple, вы можете просто использовать команду PointPlot из пакета Статистика с параметром style, установленным на line pointline. Например:

Statistics:-PointPlot([2, 4, 6, 4], xcoords=[1, 2, 3, 4], style=pointline);

Указание параметра style = pointline показывает как точки, так и соединительную линию; style = line показывает только линию.

1 голос
/ 17 февраля 2010

Если у вас есть диаграмма рассеяния (созданная с использованием функции разброса, я подозреваю) и по какой-то причине не хотите перерисовывать ее с помощью графика, вот что вы можете сделать, чтобы соединить точки:

h = findobj(gca,'type','hggroup');
hold on
for k=1:numel(h)
    x = get(h(k),'xdata');
    y = get(h(k),'ydata');
    plot(x,y,'-')
end
hold off

Точки будут связаны в исходном порядке. Если вы хотите, вы можете отсортировать данные перед графиком, например, по x:

[x,ind] = sort(x);
y = y(ind);
...