我想知道是否可以在MATLAB中定义自定义颜色快捷方式。
可以使用r
而不是在MATLAB中指定[1,0,0]
吗?同样,是否可以定义另一个快捷方式?
例如,我想定义,
[0.9047,0.1918,0.1988]
为rr
[0.2941,0.5447,0.7494]
为bb
等
答案 0 :(得分:8)
简单地说:是和否。你可以像你所说的那样创建自定义颜色快捷方式,但我能看到你创建这些快捷方式的唯一方法是通过关联数组/字典。这可能不是你原本想要的,但这是我能想到的最接近你想要的东西。您无法创建像r
这样的字符串,它会将自己解析为[1,0,0]
的元组(...至少不是我所知的),但您可以创建一个颜色元组字典通过单个字符或字符串访问字典,输出将是3个元素数组。
使用这个,使用containers.Map
对象,密钥类型将是一个字符串(如rr
,bb
等),输出(值类型)将是一个双数组。例如,我们假设您的数组名为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];
设置完成后,您可以通过以下方式访问所需的特定颜色元组:
colourMap(s)
s
将是您想要的字符串。我不知道你想用它做什么,但我假设你可能想要自定义绘图的颜色。例如,我们可以这样做:
plot(1:5, 1:5, 'Color', colourMap('bb'));
这将为x
和y
创建1到5的图,并使用bb
中存储的颜色元组为地图着色。
这是我可以看到您创建自定义字符串快捷方式的唯一方法。 FWIW,MATLAB已经内置了可用于绘制数据的颜色。例如,如果您想绘制一条红线,您只需执行以下操作:
plot(1:5, 1:5, 'r');
答案 1 :(得分: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