2015-02-03 3 views
0

следующая проблема:Установить легенду участка вручную/изменить порядок

У меня есть 5000 двухмерных (x/y) Datapoints, которые состоят из 10 разных классов. (Хранится в матрице 5000x2) Все точки данных являются плоттетом на одной фигуре, каждый класс получил свой собственный стиль цвета/маркера.

Информация о размере Datapoints: случайный! (Так, может быть, он начинается с точки из class1, может быть class8, ... и может быть, есть Class5 последовал другой Class5 и так далее ...)

Упрощенный фрагмент кода:

figure(1) 
for k=1:5000 
... 
    if class == 1 
     ColorValue = 'r'; MarkValue = '+'; 
     legendset = [legendset;'class1']; 
    elseif class == 2 
    ... 
    end 

    plot(Data(k,1), Data(k,2),'color', ColorValue, 'marker', MarkValue); 
    hold on; 
end 

legend(legendset(1:10)); 

Итак, в «legendset» у меня есть легендарные значения в порядке, когда он получает plottet, но так как это не в порядке, и появляются дубликаты, легенда полностью перепутана.

Мне нужна легенда, которая показывает каждый класс один раз из класса 1-10, независимо от того, какой заказ он получает.

Любые идеи?

ответ

0

Попробуйте разделить ваши точки данных на разные классы, а затем построить каждый класс с помощью команды plot. Затем каждый класс автоматически получит новый цвет, и legend автоматически пометит каждый из них. Например, если у вас есть классы каждой точки данных, загруженные в вектор называется Classes (скажет Classes = [1 8 5 5 ...] с вашим примером), вы могли бы сделать что-то вроде этого:

nClasses = 10; 

for i = 1:nClasses 
    % Extract just the data points with class i: 
    DataI = Data(Classes == i, :); 

    % Form a string with the class name: 
    ClassName = sprintf('Class %d', i); 

    % Plot this data. The 'DisplayName' property will appear 
    % in the legend. 
    plot(DataI(:,1), DataI(:,2), 'DisplayName', ClassName); 
    hold all; 
end 

legend 
+0

Я надеялся, что есть простой способ, чтобы установить легенда «вручную», но, похоже, нет. Поэтому я решил свою проблему более или менее, как вы предлагали. В любом случае, благодарю Вас! – zwif

Смежные вопросы