我试图从我的数据中绘制一个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');
我想知道是否有更简洁的方法。感谢
答案 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选择线条颜色。
在任何情况下,您都需要手动定义不同的符号,每个绘图命令都带有一种独特的线和标记。