0

N 62-D ベクトルを持つ Nx62 行列と、ベクトルのラベルを持つ NX1 ベクトルがあります。62 次元空間にプロットしたときのこれらのクラスの動作を確認したいので、これらのベクトルをラベル付きでプロットしようとしています。ベクターは、前に引用した NX1 ベクターのラベルに従って 3 つのクラスに属します。

matlabでそれを行う方法は? plot(vector,classes) を実行すると、結果を分析するのが非常に奇妙になります。グラフにラベルを付ける方法は?

ラベル、ベクトル、およびプロットを取得するために使用しているコードは次のとおりです。

%labels is a vector with labels, vectors is a matrix where each line is a vector
[labels,vectors]=libsvmread('features-im1.txt');

3次元ベクトルをプロットするときは簡単です

a=[1,2,3]
plot(a)

そして、私は結果を得る

単純なプロット

しかし、今では一連のベクトルと一連のラベルがあり、それらの分布を確認したいのですが、これらの各ラベルをプロットしたいだけでなく、それらのクラスも識別したいと考えています。matlabでそれを行う方法は?

編集: このコードはほとんど機能しています。問題は、ベクトルとクラスごとに、プロットが色を割り当てるという事実です。クラスごとに 1 つずつ、3 つの色と 3 つのラベルが必要です。

[class,vector]=libsvmread('features-im1.txt'); 
%the plot doesn't allow negative and 0 values in the label 
class=class+2; 
labels = {'class -1','class 0','class 1'}; 
h = plot(vector); 
legend(h,labels{class})   
4

1 に答える 1

1

私が正しく理解していれば、これはあなたが望むことをします:

N = 5;
classes = [1 2 3 1 2]; % class of each vector. Size N x 1
colors = {'r', 'g', 'b'}; % you can also define them numerically
matrix = rand(N,62); % example data. Size N x 62
labels = {'class 1','class 2','class 3'}; % class names. Size max(classes) x 1
h = plot(matrix.');
h_first = NaN(1,3); % initialization
for k = 1:max(classes)
    ind = find(classes==k);
    set(h(ind), 'color', colors{k}) % setting color to all plots of a given class
    h_first(k) = h(ind(1)); % remember a handle of each color (for legend)
end
legend(h_first,labels)
于 2013-11-11T14:57:44.820 に答える