将matlab图形中的多个线条颜色同时设置为不同的值

Setting multiple line colors in matlab figures simultaneously to different values

我在 MATLAB 中有一个带有一些线条的图形,这些线条会自动分配给各种颜色,我想为其他图形对象设置相同的颜色序列。

例如:

x = 0:10; y = 0:0.5:5;
h = plot(x,y+1, x,y+2), hold on
g = plot(x,y-1, x,y-2)
% want to get the bottom two lines to match respectively the colors of the top two lines

% suggested code:
g.Color = h.Color; % doesn't work

我知道我可以使用下面的代码同时设置多个线对象的颜色,但我只设法弄清楚如何使用它来将所有线对象设置为单一颜色。 (相反,我希望 'g' 中的每个线对象采用不同的颜色值,即来自 'h' 的相应索引线对象的颜色)。

set(g,'Color', [1 0 0]);

我想避免循环遍历并单独设置每一行,例如

g(1).Color = h(1).Color; % ...

我尝试了各种包装或转换 g 和 g.Color 和 h.Color 的输出的方法,例如 [g.Color], g(:).Color, g{: }.Color 等,但我还没有设法找到有用的东西。我也尝试使用 cellfun(@(x,y) x.Color = y.Color, g, h) 和类似的代码,但没有成功。我实际上并不完全清楚这些对象的数据结构——在我看来 g.Color 像元胞数组一样列出值,但它实际上不是元胞数组..


同样,我们的目标是在一行代码中将图形句柄中的多个线条对象的颜色分别设置为不同的颜色,特别是另一个图形句柄对象(具有相同数量的线对象)。

感谢任何建议!

您的 gh 都是 数组 Line 对象。虽然您可以使用简化语法 h.Color 一次访问所有对象的 Color 属性,但您得到的不是单个结果,而是一系列结果:

>> g.Color
ans =
                     0.929                     0.694                     0.125
ans =
                     0.494                     0.184                     0.556

要为一个 = 表达式中的多个变量分配多个值,请使用语法

[g.Color] = h.Color;

请参阅 deal 的文档中的 "Example 3"。