问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MATLAB绘图颜色设置完全指南:从基础到实战

创作时间:
作者:
@小白创作中心

MATLAB绘图颜色设置完全指南:从基础到实战

引用
CSDN
1.
https://blog.csdn.net/weixin_44209907/article/details/138911223

MATLAB提供了丰富的颜色设置选项,包括颜色名称、RGB三元组和十六进制颜色代码,让用户能够灵活地自定义绘图颜色。本文将详细介绍这些颜色设置方法,并通过具体的代码示例展示如何在条形图、散点图等不同类型的绘图中应用这些设置。

颜色值的类型

MATLAB支持以下几种颜色值:

  • 颜色名称或短名称:例如 "red" 或 "green",也可以使用短名称如 "r" 或 "g"。
  • RGB三元组:通过一个三元素行向量指定颜色,每个元素表示红、绿、蓝分量的强度,范围为 [0,1]。例如,[1 0.5 0.8] 表示粉红色。
  • 十六进制颜色代码:以井号 (#) 开头,后跟三个或六个十六进制数字,范围为 0 到 F。例如,"#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 三元组
十六进制颜色代码
外观
[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"

指定条形图的颜色

通过调用 bar 函数并将可选的 color 参数指定为 "red",创建一个红色条形图。以 b 形式返回条形对象,以便以后可以自定义图的其他方面。

b = bar(1:10,"red");

现在,通过将 FaceColorEdgeColor 属性设置为十六进制颜色代码 "#80B3FF",将条形图填充颜色和轮廓颜色更改为浅蓝色。

在 R2019a 之前,指定 RGB 三元组,而不是十六进制颜色代码。例如,b.FaceColor = [0.5 0.7 1]

b.FaceColor = "#80B3FF";
b.EdgeColor = "#80B3FF";

指定散点图中的标记颜色

创建随机数散点图。将标记大小指定为 75 磅,并使用名称-值参数指定标记轮廓和填充颜色。

MarkerEdgeColor 属性控制轮廓颜色,而 MarkerFaceColor 属性控制填充颜色。

x = rand(1,100);
y = rand(1,100);
scatter(x,y,75,"MarkerEdgeColor","b", ...
    "MarkerFaceColor",[0 0.7 0.7])

指定一系列绘图中的颜色

创建一系列绘图有两种方式:

  • 多次调用一个绘图函数,并使用 hold 函数来保留坐标区的内容。
  • 将一个包含多个数据序列的矩阵传递给绘图函数。

plot 函数始终接受矩阵输入,许多其他绘图函数也支持矩阵输入。

要为上述方法中的任一方法指定颜色,请使用一个输出参数调用所需的绘图函数,以便可以访问各个绘图对象。然后在要更改的绘图对象上设置属性。

例如,创建一个包含 100 磅的填充标记的散点图。使用输出参数 s1 调用 scatter 函数。调用 hold 函数以保留坐标区的内容,然后使用输出参数 s2s3 再调用两次 scatter 函数。变量 s1s2s3Scatter 对象。

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];

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号