2015-05-27 49 views
2

我在MATLAB中有一些图形,它会自动分配给不同的颜色,并且我想为其他图形对象设置相同的颜色序列。在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.Color和h.Color的输出像[g.Color],g(:)。颜色,g {:}。颜色等,但我还没有设法找到一些工作。我也试过使用cellfun(@(x,y)x.Color = y.Color,g,h)和类似的代码,但没有成功。我其实不是对这些数据结构objects--我看来,g.Color列出淘汰的价值观一样的单元阵列不完全清楚,但它实际上不是一个单元阵列..


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

感谢您的任何建议!

回答

3

您的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; 

参见 “实施例3” 的deal的文件中。

+0

我*真的*在这里学到了一些东西。 – thewaywewalk

+0

@thewaywewalk,不得不自己去看看。 :) –

+0

它实际上是一个明显的代码行,因为双方都返回一个逗号分隔的列表,这就是在这种情况下做一个赋值的方式,但是由于没有使用相应的运算符':',所以我从来不会想到它。 – thewaywewalk

相关问题