简单来说:可以和不可以。您可以像您所说的那样创建自定义颜色快捷方式,但我能想到的唯一办法是使用关联数组/字典来创建这些快捷方式。这可能不是您最初想要的,但这是我能想到的最接近实现您所需求的东西。您无法创建像
r
这样的字符串,将其解析为元组
[1,0,0]
(至少根据我的知识不行),但是您可以创建一个颜色元组的字典,其中您通过单个字符或一串字符访问字典,输出将是一个3元素数组。
有了这个,使用
containers.Map
对象,键类型将是字符串(如
rr
,
bb
等),输出(值类型)将是双精度数组。例如,假设您的数组名为
colourMap
。那么你将初始化它,然后像这样添加一些条目:
%
colourMap = containers.Map('KeyType', 'char', 'ValueType', 'any');
%
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的图,对于x
和y
都有效,并使用存储在bb
中的颜色元组来着色。
这是我能想到的创建自定义字符串快捷方式的唯一方法。顺便说一句,MATLAB已经内置了可以用于绘制数据的颜色。例如,如果您想要绘制红色线条,则只需执行以下操作:
plot(1:5, 1:5, 'r');
colourMap
的函数,它将返回输入'rr'
对应的[0.9047, 0.1918, 0.1988]
。这将具有与你建议的完全相同的语法,并且可能更容易维护。或者,比这两个选项更好的方法是创建一个包含预定义颜色列表的枚举类Colors
,然后你可以键入Colors.rr
或Colors.bb
等等。这才是正确的做法。 - Sam Roberts