用标签绘制Matlab

时间:2017-11-15 22:25:35

标签: matlab plot scatter-plot knn

我试图从我的数据中绘制一个knn结果,该数据有3列:x,y,label。有3个类,每个类我都想使用不同的符号。这就是我现在正在密谋的方式:

t1 = data(:,3) == 1;
t2 = data(:,3) == 2;
t3 = data(:,3) == 3;

train1 = data(t1,:);
train2 = data(t2,:);
train3 = data(t3,:);

figure(1);

plot(train1(:,1),train1(:,2),'#',train2(:,1),train2(:,2),'*',train3(:,1),train3(:,2),'o');

我想知道是否有更简洁的方法。感谢

1 个答案:

答案 0 :(得分:0)

这是绘制数据最简洁(也是最有效)的方法:

figure(1);
hold all
plot(train1(:,1),train1(:,2),'o')
plot(train2(:,1),train2(:,2),'x')
plot(train3(:,1),train3(:,2),'s')

这是一个以强大的模块化方式完成您想要的工作的示例。您可以轻松添加类或修改数字输出。

data = [0.53,0.17,2;0.78,0.60,3;0.93,0.26,1;0.13,0.65,2;0.57,0.69,1;...
        0.47,0.75,3;0.010,0.45,1;0.34,0.080,3;0.16,0.23,3;0.79,0.91,3;...
        0.31,0.15,1;0.53,0.83,2];

categories = [1,2,3];
symbols = {'s','<','o','d','v','+','x','*'};
figure;
hold all
for loopj = 1:length(categories)
    t = data(:,3) == categories(loopj);
    train = data(t,:);
    label = strcat('Class ',num2str(categories(loopj)));
    plot(train(:,1),train(:,2),symbols{loopj},'DisplayName',label,'LineWidth',1.3)
end
lg = legend('show');
lg.Location = 'best';

使用hold all在不删除前一个axi的情况下在图上书写,并让Matlab选择线条颜色。

在任何情况下,您都需要手动定义不同的符号,每个绘图命令都带有一种独特的线和标记。