matlab使用一组默认颜色创建绘图。使用默认颜色创建的不同绘图将呈现清晰一致的外观。您也可以按需求自定义颜色。许多绘图函数都有用于自定义颜色的输入参量,如c
或colorspec
。这些函数返回的对象通常具有控制颜色属性。参量和属性的名称可以不同,但它们接受的值通常遵循一种通用模式。一旦熟悉了该模式,您就可以使用它来修改各种绘图。
以下示例使用bar
和scatter
函数来演示自定义颜色整体方法。有关特定绘图函数的有效颜色值的完整列表,请参考该函数的文档。
1.颜色值的类型
有以下几种颜色值:
- 颜色名称或短名称- 指定颜色名称,例如
"red"
或"green"
。短名称从颜色名称中指定字母,例如"r"
或"g"
。 - rgb 三元组- 通过指定一个三元素行向量来创建自定义颜色,该向量的元素是颜色中红、绿、蓝分量的强度。强度必须处于范围
[0,1]
中。例如,您可以用[1 0.5 0.8]
来指定粉红色。 - 控制颜色的某些函数参量并不接受 rgb 三元组,但控制颜色对象属性通常接受。
- 十六进制颜色代码- 通过以下方式创建一个自定义颜色:指定一个字符串或字符向量,以井号 (
#
) 开头,后跟三个或六个十六进制数字,范围可以是0
到f
。这些值不区分大小写。因此,颜色代码"#ff8800"
、"#ff8800"
、"#f80"
和"#f80"
都指定相同的橙色色调。 - 某些控制颜色的函数参量不接受十六进制颜色代码,但您可以使用与对象属性对应的名称-值参量来指定十六进制颜色代码。例如,
scatter(x,y,sz,"markerfacecolor","#ff8800")
将散点图中的标记颜色设置为橙色。
下表列出了所有有效的颜色名称和短名称,以及对应的 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" |
以下是 matlab 在许多类型的绘图中使用的默认颜色的 rgb 三元组和十六进制颜色代码。这些颜色没有与之相关联名称。
rgb 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072bd" | |
[0.8500 0.3250 0.0980] | "#d95319" | |
[0.9290 0.6940 0.1250] | "#edb120" | |
[0.4940 0.1840 0.5560] | "#7e2f8e" | |
[0.4660 0.6740 0.1880] | "#77ac30" | |
[0.3010 0.7450 0.9330] | "#4dbeee" | |
[0.6350 0.0780 0.1840] | "#a2142f" |
2.指定条形图的颜色
通过调用bar
函数并将可选的color
参量指定为 "red"
,创建一个红色条形图。以b
形式返回条形对象,以便以后可以自定义图的其他方面。
b = bar(1:10,"red");
现在,通过将facecolor
和edgecolor
属性设置为十六进制颜色代码 "#80b3ff"
,将条形图填充颜色和轮廓颜色更改为浅蓝色。
在 r2019a 之前,指定 rgb 三元组,而不是十六进制颜色代码。例如,b.facecolor=[0.5 0.7 1]
。
b.facecolor = "#80b3ff"; b.edgecolor = "#80b3ff";
3.指定散点图中的标记颜色
创建随机数散点图。将标记大小指定为75
磅,并使用名称-值参量指定标记轮廓和填充颜色。markeredgecolor
属性控制轮廓颜色,而markerfacecolor
属性控制填充颜色。
x = rand(1,100); y = rand(1,100); scatter(x,y,75,"markeredgecolor","b", ... "markerfacecolor",[0 0.7 0.7])
4.指定一系列绘图中的颜色
创建一系列绘图有两种方式:
多次调用一个绘图函数,并使用
hold
函数来保留坐标区的内容。将一个包含多个数据序列的矩阵传递给绘图函数。
plot
函数始终接受矩阵输入,许多其他绘图函数也支持矩阵输入。
要为上述方法中的任一方法指定颜色,请使用一个输出参量调用所需的绘图函数,以便可以访问各个绘图对象。然后在要更改的绘图对象上设置属性。
例如,创建一个包含 100 磅的填充标记的散点图。使用输出参量s1
调用scatter
函数。调用hold
函数以保留坐标区的内容,然后使用输出参量s2
和s3
再调用两次scatter
函数。变量s1
、s2
和s3
是scatter
对象。
figure x = 1:5; s1 = scatter(x,[6 3 9 10 7],100,"filled"); hold on s2 = scatter(x,[16 13 19 20 17],100,"filled"); s3 = scatter(x,[26 23 29 33 27],100,"filled"); hold off
将第二个scatter
对象的颜色更改为紫色。
s2.markerfacecolor = [0.7 0 1];
scatter
函数还支持矩阵输入(从 r2021a 开始提供),因此您可以通过传递矩阵并返回对象向量来创建相同的绘图。
figure x = 1:5; y = [6 3 9 10 7; 16 13 19 20 17; 26 23 29 33 27]; s = scatter(x,y,100,"filled");
在这种情况下,要更改第二个数据序列的颜色,请通过对s
进行索引来访问第二个scatter
对象。
s(2).markerfacecolor = [0.7 0 1];
推荐阅读:matlab常用绘图颜色搭配有哪些
发表评论