以下问题:
我有5000个二维(x / y)数据点,由10个不同的类组成。 (存储在5000x2矩阵中) 所有数据点都是一个图中的plottet,每个类都有自己的颜色/标记样式。
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的顺序设置了图例值,但是因为它没有顺序并且出现重复,所以图例完全搞砸了。
我想要一个传奇,它从class1-10中显示每个类一次,与plottet的顺序无关。
有什么想法吗?
答案 0 :(得分: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