控制绘图函数如何选择颜色和线条样式
当你在同一个坐标轴上绘制多个数据集时,MATLAB®自动为绘图对象分配不同的颜色(可能还有线条样式和标记)。在调用绘图函数时,可以自定义颜色、线条样式和标记,也可以在调用函数后设置属性。
例如,绘制一条红色实线和一条绿色虚线。然后在红线上添加方形标记,在绿线上添加圆形标记。
P1 = plot([0 1 2 3],“- r”);持有在P2 = plot([1 2 3 4],“——g”);持有从%添加标记p1。标志=“平方”;p2。标志=“o”;
中描述了这种方法指定绘图颜色.它对于定制几个图的各个方面非常有用。但是,它在其他情况下就不那么灵活了,比如在循环中绘制数据,或者将矩阵数据传递给绘制函数。在这种情况下,您可以更改控制MATLAB如何自动分配颜色、线条样式和标记的属性。
请注意
以下示例中的部分功能从R2019b开始可用,部分功能从R2020a开始可用。要在以前的版本中修改绘图颜色和线条样式,请参见为什么情节线颜色不同?而且用于绘图的线样式- LineStyleOrder.
自动分配工作原理
MATLAB为绘图对象分配颜色(例如行
,散射
,酒吧
对象中列出的颜色进行循环ColorOrder
坐标轴的性质。的ColorOrder
属性包含一个RGB三元组数组,其中每个RGB三元组定义一种颜色。默认的ColorOrder
数组包含7种颜色。如果你创建的对象比颜色多,颜色就会重复。
如果绘图对象支持线条样式和标记,MATL金宝appAB也循环遍历列表中的LineStyleOrder
坐标轴的性质。的LineStyleOrder
属性包含字符序列的单元格数组,其中每个字符序列对应于一个行样式(或与标记组合的行样式)。默认的LineStyleOrder
数组只包含实线样式,(“-”)
.所有的颜色ColorOrder
数组中使用一个字符序列LineStyleOrder
在使用下一个序列之前。对于每个新的绘图对象,循环继续进行。如果物体的数量多于颜色和字符序列的组合,那么循环就会重复。
对于给定的一对ColorOrder
而且LineStyleOrder
特定绘图对象的数组、颜色、线条样式和标记由对象的值决定SeriesIndex
,这是R2020a开始的新属性。默认情况下,SeriesIndex
属性是一个数字,对应于对象的创建顺序,从1
.用MATLAB来计算指数的数值ColorOrder
而且LineStyleOrder
数组。
例如,创建一个带有两种颜色的axis对象ColorOrder
数组(红色和蓝色)和两个行样式LineStyleOrder
数组(实线和虚线)。然后画出五条线。
Ax =轴;斧子。ColorOrder = [1 0 0;0 0 1];斧子。LineStyleOrder = {“- - -”,“——”};持有在为I = 1:5 plot([I I +2])结束持有从
该表列出了SeriesIndex
,索引成ColorOrder
数组,并将索引放入LineStyleOrder
前面绘图中的每一行的数组。
SeriesIndex |
索引ColorOrder 数组 |
索引LineStyleOrder 数组 |
行外观 | |
---|---|---|---|---|
第一行 | 1 |
1 |
1 |
红色实线 |
第二行 | 2 |
2 |
1 |
蓝色实线 |
第三行 | 3. |
1 |
2 |
红色虚线 |
第四行 | 4 |
2 |
2 |
蓝色虚线 |
第五行 | 5 |
1 |
1 |
红色实线 |
控件,可以更改绘图对象的颜色、线条样式和标记ColorOrder
或LineStyleOrder
坐标轴的属性,或者通过改变SeriesIndex
绘图对象的属性。
改变配色方案和线条样式
改变了ColorOrder
属性将更改绘图的配色方案。改变了LineStyleOrder
属性更改绘图中使用的线样式(可能还有标记)。例如,使用默认颜色和线条样式在循环中绘制8行。
Ax =轴;持有在为I = 0:7 plot([I I +2])结束持有从
取代ColorOrder
数组使用包含四种颜色的新数组(也可以使用colororder
功能)。然后替换LineStyleOrder
数组,使用包含两种行样式的新单元格数组。线条会自动使用新的颜色和线条样式。
%更新R2019b或更高版本的现有图斧子。ColorOrder = [1 0 0;0 10 0;0 0 1;0 0 0];斧子。LineStyleOrder = {“- - -”,“——”};
将索引更改为ColorOrder
而且LineStyleOrder
数组
改变了SeriesIndex
属性将索引更改为ColorOrder
而且LineStyleOrder
数组。当您希望一个对象的颜色、线条样式和标记与另一个对象相匹配时,更改索引非常有用。
例如,在一个循环中绘制四个正弦波,改变波长和相位。对于每个正弦波,设置SeriesIndex
性质根据波长。在结果图中,具有相同波长的正弦波也具有相同的颜色。
X = linspace(0,10,200);Ax =轴;持有在为= 0:3:3为T = 1:2 plot(x,sin(x/ T +),“SeriesIndex”, t)%要求R2020a及以上版本结束结束持有从
要使一对正弦波更突出,将颜色顺序更改为不同的颜色集。
斧子。ColorOrder = [0.8 0.8 0.9;0.2 0.2 0.8];