我有一个带有N 62-D向量的Nx62矩阵和一个带有向量标签的NX1向量。我试图用它们的标签绘制这些矢量,因为我想在62维空间中绘制时看到这些类的行为。根据之前引用的NX1载体的标记,载体属于三类。
如何在matlab中使用?当我绘制(矢量,类)时,结果是非常奇怪的分析,如何在图形中放置标签?
我用来获取标签,矢量和绘图的代码如下:
%labels is a vector with labels, vectors is a matrix where each line is a vector
[labels,vectors]=libsvmread('features-im1.txt');
当我绘制三维向量时很简单
a=[1,2,3]
plot(a)
然后我得到了结果
但现在我有一组矢量和一组标签,我想看看它们的分布,我想绘制这些标签中的每一个,但也想要识别它们的类。如何在matlab中做到这一点?
编辑:此代码几乎正常运行。问题在于,对于每个向量和类,图将指定颜色。我只想要三种颜色和三种标签,每个类别一种。[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})
答案 0 :(得分: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)