如何在MATLAB中定义自定义颜色快捷方式(例如'r'、'g'、'b'、'k'等)

4
我想知道在MATLAB中是否可以定义自定义颜色快捷方式。
在MATLAB中是否可以使用“r”代替指定的“[1,0,0]”?同样,是否可以定义其他快捷方式?
例如,我想定义:
将“[0.9047,0.1918,0.1988]”定义为“rr” 将“[0.2941,0.5447,0.7494]”定义为“bb”等。
2个回答

7
简单来说:可以和不可以。您可以像您所说的那样创建自定义颜色快捷方式,但我能想到的唯一办法是使用关联数组/字典来创建这些快捷方式。这可能不是您最初想要的,但这是我能想到的最接近实现您所需求的东西。您无法创建像r这样的字符串,将其解析为元组[1,0,0](至少根据我的知识不行),但是您可以创建一个颜色元组的字典,其中您通过单个字符或一串字符访问字典,输出将是一个3元素数组。
有了这个,使用containers.Map对象,键类型将是字符串(如rrbb等),输出(值类型)将是双精度数组。例如,假设您的数组名为colourMap。那么你将初始化它,然后像这样添加一些条目:
%// Initialize associative array
colourMap = containers.Map('KeyType', 'char', 'ValueType', 'any');

%// Put some entries in - referring to your post
colourMap('r') = [1 0 0];
colourMap('rr') = [0.9047,0.1918,0.1988];
colourMap('bb') = [0.2941,0.5447,0.7494];

一旦您设置好了,您可以通过以下方式访问所需的特定颜色元组: ```python color = colors["color_name"] ```
colourMap(s)

s是你想要的字符串。我不知道你想用它做什么,但我假设你可能想自定义绘图的颜色。例如,我们可以这样做:

plot(1:5, 1:5, 'Color', colourMap('bb'));

这将创建一个从1到5的图,对于xy都有效,并使用存储在bb中的颜色元组来着色。

这是我能想到的创建自定义字符串快捷方式的唯一方法。顺便说一句,MATLAB已经内置了可以用于绘制数据的颜色。例如,如果您想要绘制红色线条,则只需执行以下操作:

plot(1:5, 1:5, 'r');

如果你要这样做,那么你也可以简单地创建一个名为 colourMap 的函数,它将返回输入 'rr' 对应的 [0.9047, 0.1918, 0.1988]。这将具有与你建议的完全相同的语法,并且可能更容易维护。或者,比这两个选项更好的方法是创建一个包含预定义颜色列表的枚举类 Colors,然后你可以键入 Colors.rrColors.bb 等等。这才是正确的做法。 - Sam Roberts
@rayryeng 和 SamRoberts 谢谢。这对我很有帮助。如果你们有任何额外的建议,请发表。 - Denny Alappatt

2
使用 struct
%Defining your colors and some other colors in a struct
c = struct('rr', [0.9047, 0.1918, 0.1988], ...  %Your required color
    'bb', [0.2941, 0.5447, 0.7494], ... %Your required color
    'um', [0.0824, 0.1294, 0.4196], ... %ultra marine
    'br', [0.6510, 0.5725, 0.3412], ... %bronze
    'gl', [0.8314, 0.7020, 0.7843] );   %greyed lavender

现在要使用这些颜色,可以使用Color属性,即:
plot(x, y, 'Color', c.br);  %Using the color 'bronze' defined in the struct

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接