validatecolor
验证颜色值
说明
示例
创建一个 2×3 矩阵,其中包含两种颜色的无符号 16 位值。然后验证这些颜色。
c = uint16([32768 0 65535; 0 65535 0]);
RGB = validatecolor(c,'multiple')
RGB = 2×3
0.5000 0 1.0000
0 1.0000 0
验证三个十六进制颜色代码。
RGB = validatecolor({'#8000FF','#0F0','#FF9900'},'multiple')
RGB = 3×3
0.5020 0 1.0000
0 1.0000 0
1.0000 0.6000 0
定义一个名为 plotlines
的函数,该函数接受表示 y 坐标数组的 y
和表示线条颜色的 linecolors
作为输入。该函数创建一个 y
中的值的彩色线图。
在该函数中,通过调用 validatecolor
函数来检查 linecolors
的有效性。指定 'multiple'
选项以允许用户指定一种或多种颜色。如果颜色无效,validatecolor
将显示一条错误消息。否则,它返回等效的 RGB 三元组数组。接下来,使用 RGB
数组的大小来确定线条之间的颜色分布。
在一个可写文件夹中将函数另存为 plotlines.m
。
function plotlines(y,linecolors) % Plot colored lines. p = plot(y); % Check for valid color values RGB = validatecolor(linecolors,'multiple'); % Use RGB array in a calculation ncolors = size(RGB,1); nlines = numel(p); nupdate = min(ncolors,nlines); for n = 1:nupdate p(n).Color = RGB(n,:); end
调用 plotlines
函数绘制一个红色线条、一个蓝色线条和一个黑色线条。
plotlines([0 1 2; 1 2 3],{'red','blue','black'})
现在用无效颜色值来调用函数。在本例中,指定标量值而不是 m×3 数组。MATLAB® 显示 validatecolor
函数返回的错误。
plotlines([0 1 2; 1 2 3],255)
Error using validatecolor (line 50)
Specify colors as a three-column matrix.
Error in plotlines (line 6)
RGB = validatecolor(linecolors,'multiple');
定义一个名为 plotminmax
的函数,该函数接受表示 y 坐标数组的 y
和表示颜色的可选参量 c
作为输入。该函数创建一个线图,并在 y
的最小值和最大值处绘制两条水平虚线。默认情况下,虚线为黑色,但用户可以使用 c
参量自定义颜色。
在 arguments
代码块中,使用 validatecolor
函数检查 c
的有效性。将 'black'
定义为默认颜色,以便 c
可以是可选输入。然后,绘制 y
,并使用颜色 c
在最小值和最大值处显示两条水平线。
在一个可写文件夹中将函数另存为 plotminmax.m
。
function plotminmax(y,c) % Plot lines with horizontal lines indicating min/max of y. arguments y {mustBeNumeric, mustBeNonempty} c {validatecolor} = 'black' end plot(y) % Add min and max lines ymin = min(y,[],'all'); ymax = max(y, [],'all'); yline(ymin,'--','Color',c) yline(ymax,'--','Color',c) end
用表示红色的十六进制颜色代码作为参数调用 plotminmax
函数。该函数绘制坐标并以指定的颜色显示水平线。
plotminmax([8.4 2.5 7 3 9.2],'#FF0000')
调用带无效颜色值的函数。在本例中,指定一个无效的颜色名称。MATLAB 显示 validatecolor
函数返回的错误。
plotminmax([8.4 2.5 7 3 9.2],'chartreuse')
Error using plotminmax
Invalid argument at position 2. 'chartreuse' is not a valid
color specification. Valid names include: 'red', 'green',
'blue', 'cyan', 'magenta', 'yellow', 'black', and 'white'.
Valid hexadecimal color codes consist of '#' followed by three
or six hexadecimal digits.
输入参数
要验证的颜色值,指定为下列值之一:
范围在
[0,1]
之间的 1×3single
或double
值向量,其中的三个值分别对应于颜色的红、绿和蓝分量的强度。1×3 无符号整数向量,其中的三个整数分别对应于颜色的红、绿和蓝分量的强度。
由
single
或double
值或者无符号整数组成的 m×3 矩阵,矩阵中的每一行包含一种颜色的红、绿和蓝分量的强度。指定颜色名称(如
'red'
)或十六进制颜色代码(如'#F92B30'
)的字符向量。字符向量一维元胞数组或字符串数组,其中数组中的每个元素或者是颜色名称(如
'red'
),或者是十六进制颜色代码(如'#F92B30'
)。
下表列出了有效的颜色名称,及其等效的 RGB 三元组和十六进制颜色代码。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" |
示例: RGB = validatecolor(uint8([255 0 0]))
示例: RGB = validatecolor("#FF8800")
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
大小选项,指定为下列选项之一:
'one'
- 仅接受一个颜色值。否则返回错误。'multiple'
- 接受零个或多个颜色值。
示例: RGB = validatecolor(["red" "green"],'multiple')
输出参量
等效的 RGB 值,以一个 RGB 三元组或由多个 RGB 三元组形成的 m×3 矩阵形式返回。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。颜色强度在范围 [0,1]
内。例如,[1 0 0]
是红色,[0.5 0.5 0.5]
是灰色中间色调。
版本历史记录
在 R2020b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)