【问题标题】:How can I order items in a Matlab legend via the figure editor?如何通过图形编辑器在 Matlab 图例中订购项目?
【发布时间】:2013-08-10 13:39:06
【问题描述】:

我创建了一个包含多组数据的直方图。数据集是转换为灰度的彩色图像,并在给定的时间段内拍摄(例如 pic 1 @ time=0、pic 2 @ time=5min 等),这就是为什么我需要以特定顺序显示图例条目的原因.当我放入图例时,条目散布在没有特定顺序的地方,我无法弄清楚如何按照我需要的方式切换条目。

【问题讨论】:

    标签: matlab legend


    【解决方案1】:

    2017a 及更高版本(使用上面Peter M 的部分答案)

    1. 使用工具栏中的标准箭头按钮选择“编辑绘图”。这将允许您选择绘图线。
    2. 选择要在图例中首先出现的绘图线。
    3. 使用 Ctrl-X(或 OS X、Linux 上的任何东西)“剪切”绘图线。
    4. 创建一个新图(文件 -> 新建 -> 图)。
    5. 使用 Ctrl-V(或 OS X、Linux 上的其他任何方式)在新图中“粘贴”绘图行。
    6. “剪切”新图中的绘图线。
    7. “粘贴”原始图中的绘图线。
    8. 按照您想要的顺序对每条绘图线重复步骤 2-6 他们出现在传说中。右键单击图例,然后 “刷新”

    【讨论】:

      【解决方案2】:

      如果您经常重新生成情节,当然最好确保脚本以正确的顺序放置它们。 Luis Mendo 在这里提供了一个答案,但他对稍微不同的措辞的回答更加详细:how to change the sequence of the legend

      仅限 2017a 之前!似乎 2017a 打破了这种行为,因此以下技巧在最新版本中不起作用。

      要回答您的具体问题,如果您只是偶尔在没有很多行的绘图上执行此操作,并且只想使用图形编辑器...

      1. 使用工具栏中的标准箭头按钮选择“编辑绘图”。这将允许您选择情节线。
      2. 选择要在图例中首先出现的绘图线。
      3. 使用 Ctrl-X(或 OS X、Linux 上的任何东西)“剪切”绘图线。
      4. 使用 Ctrl-V(或 OS X、Linux 上的其他任何方式)“粘贴”绘图线。
      5. 按照您希望它们出现在图例中的顺序,对每条绘图线重复步骤 2-4。
      6. 右键单击图例并“刷新”

      【讨论】:

      • 这似乎在 R2017a 附近的某个地方停止工作。现在,如果我剪切和粘贴这些线条,它们会按照原来的顺序粘贴,所以没有任何变化。有解决办法吗?
      • 有趣,我不知道,但这有点的解决方法。我不经常这样做,并且由于 2017a 中的一些其他烦人的更改,我的脚本遇到了一些问题,所以我将其卸载并返回到 2016b。
      【解决方案3】:

      您可以获得每个绘制对象的句柄,并在图例中使用句柄来控制哪个字符串适用于哪个绘制对象。

      例子:

      h1 = plot(1:5, 1:5, 'r');
      hold on
      h2 = plot(1:5, 2:6, 'b');
      legend([h1 h2],'First red','Second blue')
      

      【讨论】:

        【解决方案4】:

        上面的答案也适用于 R2017a 及更高版本...这里有一个更通用的示例:

        x = 1:10;
        y1 = x;
        y2 = 2*x;
        y3 = 3*x;
        y4 = x.^2;
        figure
        plot(x, y1, x, y2, x, y3, x, y4);
        lh = legend('y = x', 'y = 2*x', 'y = 3*x', 'y = x.^2');
        
        legendEntries = get(gca,'legend')
        plotHandles = get(gca,'children')
        legendEntries = legendEntries.String;
        newOrder = [3,4,1,2];
        legend([plotHandles(newOrder)],legendEntries{newOrder})
        

        【讨论】:

          【解决方案5】:

          flipud(h) 或fliplr(h) 更改数组从上到下或从左到右的完整顺序

          【讨论】:

            【解决方案6】:

            通过尝试和错误,我发现了这个简单的解决方法:

            1) 选择应位于位置 1(顶部)的绘图线 2) 力量 + X 3) Strg + V 在同一张图中

            重复步骤 2 和 3 大约 3 或 4 次。这将导致情节在图例的底部出现。现在选择应该在第二个位置的图,再次步骤 2 和 3 几次。前一个地块上移一个位置,第二个选择的地块现在位于底部.... 以同样的方式继续其余地块

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-10-07
              • 2021-06-06
              • 1970-01-01
              • 2021-12-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多