【问题标题】:Setting multiple line colors in matlab figures simultaneously to different values将matlab图形中的多条线条颜色同时设置为不同的值
【发布时间】:2015-05-27 17:02:57
【问题描述】:

我在 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 列出了像元胞数组那样的值,但它实际上不是元胞数组..


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

感谢您的建议!

【问题讨论】:

    标签: matlab graphics plot matlab-figure handle


    【解决方案1】:

    您的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文档中的“示例3”。

    【讨论】:

    • @thewaywewalk,必须自己查一下。 :)
    • 这实际上是一个明显的代码行,因为双方都返回一个逗号分隔的列表,这就是在这种情况下进行赋值的方式,但是由于没有使用相应的运算符:从来没有想过。
    • @thewaywewalk,我认为h.Colorh(:).Color 的快捷方式。你是对的,它是一个列表赋值,但一个列表甚至不是一个正确记录的 Matlab 数据类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多