Как пометить два вектора в Matlab? - PullRequest
3 голосов
/ 11 февраля 2010

У меня есть матрица из 2 столбцов (называемая M, которую я визуализирую как два вектора, используя команду Matlab plot (plot(M)). У меня есть две проблемы:

  1. Я хочу обозначить сами векторы на графике.
  2. Я хочу обозначить каждую строку матрицы (т.е. каждый компонент вектора) на графике.

Как бы я поступил так?

Ответы [ 3 ]

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

Пример:

M = cumsum(rand(10,2) - 0.5);
x = 1:size(M,1);
plot(x, M(:,1), 'b.-', x, M(:,2), 'g.-')
legend('M1', 'M2')
for i=x
    text(i+0.1, M(i,1), sprintf('%.2f', M(i,1)), 'FontSize',7, 'Color','b');
    text(i+0.1, M(i,2), sprintf('%.2f', M(i,2)), 'FontSize',7, 'Color','g');
end

plot

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

datacursormode()

, что позволит пользователю просто указать и щелкнуть по точкам , чтобы увидеть метки данных.

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

Возможно, вам понадобится настроить это так, чтобы получить положение этикеток в точности так, как вы хотите, но что-то вроде этого поможет.

M = [1 2; 3 4; 5 6]
plot(M)
nrows = size(M, 1);
ncols = size(M, 2);
x = repmat(nrows - .3, 1, ncols);
y = M(end, :) - .3;
labels = cellstr([repmat('Col', ncols, 1), num2str((1:ncols)')]);
text(x, y, labels)
0 голосов
/ 11 февраля 2010

Вы можете пометить каждую ось с помощью функции:

xlabel('label')
ylabel('label')

Они также могут принимать аргументы ячейки, где каждая строка является новой строкой. Это удобно для отображения единиц. Обозначить каждую точку на рисунке можно следующим образом:

for i=1:length(M)
    text(M(i,1),M(i,2),'Label Text')
end

Текст метки также может быть строковой переменной, которую можно редактировать с помощью sprintf и создавать специальные строки для каждой точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...