2017-11-15 16 views
1

私はx、y、labelという3つの列を持つデータからknn結果をプロットしようとしています。 3つのクラスがあり、それぞれに異なるシンボルを使いたいと思います。ラベルを使ったMatlabプロット

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

はここにあなたのデータをプロットするための最も簡潔な(と作業)方法です:

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

は、ここでは、堅牢かつモジュラーな方法で何をしたいん例です。簡単にクラスを追加したり、Figureの出力を変更することができます。

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が線の色を選択できるようにします。

いずれの場合でも、異なるシンボルを手動で定義する必要があり、各プロットコマンドには一意のタイプのラインとマーカーが付いています。

関連する問題