【问题标题】:How do I label two vectors in Matlab?如何在 Matlab 中标记两个向量?
【发布时间】:2010-02-11 08:14:19
【问题描述】:

我有一个 2 列矩阵(称为 M,我使用 Matlab 的 plot 命令(plot(M))将其可视化为两个向量。我有两个问题:

  1. 我想在图上标记向量本身。
  2. 我想在图上标记矩阵的每一行(即每个向量分量)。

我将如何去做这些事情?

【问题讨论】:

    标签: matlab matrix plot vector


    【解决方案1】:

    一个例子:

    M = cumsum(rand(10,2) - 0.5);
    x = 1:size(M,1);
    plot(x, M(:,1), 'b.-', x, M(:,2), 'g.-')
    legend('M1', 'M2')
    for i=x
        text(i+0.1, M(i,1), sprintf('%.2f', M(i,1)), 'FontSize',7, 'Color','b');
        text(i+0.1, M(i,2), sprintf('%.2f', M(i,2)), 'FontSize',7, 'Color','g');
    end
    

    或者,您可以使用:

    datacursormode()
    

    这将使用户只需point and click on points 即可查看数据标签。

    【讨论】:

      【解决方案2】:

      您可能需要对此进行调整,以使标签的位置完全符合您的要求,但类似这样的方法可以解决问题。

      M = [1 2; 3 4; 5 6]
      plot(M)
      nrows = size(M, 1);
      ncols = size(M, 2);
      x = repmat(nrows - .3, 1, ncols);
      y = M(end, :) - .3;
      labels = cellstr([repmat('Col', ncols, 1), num2str((1:ncols)')]);
      text(x, y, labels)
      

      【讨论】:

        【解决方案3】:

        您可以使用函数标记每个轴:

        xlabel('label')
        ylabel('label')
        

        这些也可以采用单元格参数,其中每一行都是一个新行。这对于显示单位很方便。标记图上的每个点可以这样:

        for i=1:length(M)
            text(M(i,1),M(i,2),'Label Text')
        end
        

        标签文本也可以是字符串变量,您可以使用 sprintf 编辑它并为每个点制作特殊字符串。

        【讨论】:

        • 这不是我要标记的轴;是向量本身。
        • 所以你不是在绘制 M(:,1) 与 M(:,2) 的对比,而是每列与 length(M(:,1)) 对比?如果是这种情况,那么您可以使用以下任一命令: text(M(1,1),M(1,1),'Label 1'),text(M(1,2),M(1,2) ,'Label 2') 或 annotation() 或 legend('Label 1','Label 2') 手册页为此提供了一些示例。文本的使用与以前相同,但每行仅用于一个点。注释功能更有用,但它有很多选项和样式功能。如果您不想弄乱绘图窗口,我也会在其中添加图例。
        猜你喜欢
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 2017-08-18
        相关资源
        最近更新 更多