【发布时间】:2013-08-10 13:39:06
【问题描述】:
我创建了一个包含多组数据的直方图。数据集是转换为灰度的彩色图像,并在给定的时间段内拍摄(例如 pic 1 @ time=0、pic 2 @ time=5min 等),这就是为什么我需要以特定顺序显示图例条目的原因.当我放入图例时,条目散布在没有特定顺序的地方,我无法弄清楚如何按照我需要的方式切换条目。
【问题讨论】:
我创建了一个包含多组数据的直方图。数据集是转换为灰度的彩色图像,并在给定的时间段内拍摄(例如 pic 1 @ time=0、pic 2 @ time=5min 等),这就是为什么我需要以特定顺序显示图例条目的原因.当我放入图例时,条目散布在没有特定顺序的地方,我无法弄清楚如何按照我需要的方式切换条目。
【问题讨论】:
2017a 及更高版本(使用上面Peter M 的部分答案)
【讨论】:
如果您经常重新生成情节,当然最好确保脚本以正确的顺序放置它们。 Luis Mendo 在这里提供了一个答案,但他对稍微不同的措辞的回答更加详细:how to change the sequence of the legend。
仅限 2017a 之前!似乎 2017a 打破了这种行为,因此以下技巧在最新版本中不起作用。
要回答您的具体问题,如果您只是偶尔在没有很多行的绘图上执行此操作,并且只想使用图形编辑器...
【讨论】:
您可以获得每个绘制对象的句柄,并在图例中使用句柄来控制哪个字符串适用于哪个绘制对象。
例子:
h1 = plot(1:5, 1:5, 'r');
hold on
h2 = plot(1:5, 2:6, 'b');
legend([h1 h2],'First red','Second blue')
【讨论】:
上面的答案也适用于 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})
【讨论】:
通过尝试和错误,我发现了这个简单的解决方法:
1) 选择应位于位置 1(顶部)的绘图线 2) 力量 + X 3) Strg + V 在同一张图中
重复步骤 2 和 3 大约 3 或 4 次。这将导致情节在图例的底部出现。现在选择应该在第二个位置的图,再次步骤 2 和 3 几次。前一个地块上移一个位置,第二个选择的地块现在位于底部.... 以同样的方式继续其余地块
【讨论】: