如何在MATLAB中定义自定义颜色快捷键(如'r','g','b','k'等)

时间:2014-09-10 00:59:49

标签: matlab colors

我想知道是否可以在MATLAB中定义自定义颜色快捷方式。

可以使用r而不是在MATLAB中指定[1,0,0]吗?同样,是否可以定义另一个快捷方式?

例如,我想定义,

[0.9047,0.1918,0.1988]rr
[0.2941,0.5447,0.7494]bb

2 个答案:

答案 0 :(得分:8)

简单地说:是和否。你可以像你所说的那样创建自定义颜色快捷方式,但我能看到你创建这些快捷方式的唯一方法是通过关联数组/字典。这可能不是你原本想要的,但这是我能想到的最接近你想要的东西。您无法创建像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];

设置完成后,您可以通过以下方式访问所需的特定颜色元组:

colourMap(s)

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

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

这将为xy创建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