【问题标题】:Plot vectors with labels in matlab在 matlab 中绘制带有标签的向量
【发布时间】:2013-11-11 14:28:30
【问题描述】:

我有一个带有 N 个 62-D 向量的 Nx62 矩阵和一个带有向量标签的 NX1 向量。我试图用它们的标签来绘制这些向量,因为我想看到这些类在 62 维空间中绘制时的行为。根据前面引用的 NX1 向量的标签,这些向量属于三类。

如何在 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');

当我绘制一个三维向量时很简单

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})   

【问题讨论】:

  • 向我们展示您的绘图代码。您是如何实现 62 维空间的可视化的?
  • @Dan:我也想看看 62 维空间!
  • 对不起。我知道很难看到 62 维空间:-)。我有一组属于类 1、-1 和 0 的向量。我怀疑这些类中的向量非常相似,我想确认一下。怎么办?

标签: matlab vector plot


【解决方案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)

【讨论】:

  • 感谢您的回答。但是这部分代码是注释吗? '班级名称。最大尺寸(类)x 1'
  • @mad 是的,对不起。已更正
  • 您的代码的问题在于,对于每个对向量,类图将在图中使用不同的颜色和不同的图例。例如,来自 0 类的 3 个向量在图例中将具有三种不同的颜色和三个条目,而不是在图例中只有一种颜色和一个条目。假设我想要图例中的三个条目(类 -1、1 和 0)和三种不同的颜色,每个类一个,并根据它们的类为向量分配这些颜色。该怎么做?
  • @mad 现在试试看告诉我
猜你喜欢
  • 2011-07-03
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
相关资源
最近更新 更多