【问题标题】:Matlab Plotting with Labels带标签的 Matlab 绘图
【发布时间】:2017-11-15 22:25:34
【问题描述】:

我正在尝试从我的数据中绘制一个 knn 结果,它有 3 列:x、y、标签。有 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');

我想知道是否有更简洁的方法来执行此操作。谢谢

【问题讨论】:

    标签: matlab plot scatter-plot knn


    【解决方案1】:

    这是绘制数据的最简洁(和有效)的方法:

    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在图上写字,不擦掉前面的轴,让Matlab挑线颜色。

    在任何情况下,您都需要手动定义不同的符号,并且每个绘图命令都带有一种独特的线条和标记类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2018-05-25
      • 2013-05-04
      相关资源
      最近更新 更多