控制绘图函数如何选择颜色和线型 |
您所在的位置:网站首页 › matlab颜色指令 › 控制绘图函数如何选择颜色和线型 |
控制绘图函数如何选择颜色和线型 当您在同一坐标区内绘制多个数据集时,MATLAB® 会自动为绘图对象分配不同的颜色(可能还有不同的线型和标记)。您可以在调用绘图函数时自定义颜色、线型和标记,还可以在调用函数后设置属性。 例如,绘制一条红色实线和一条绿色虚线。然后在红线上添加方形标记,在绿线上添加圆形标记。 p1 = plot([0 1 2 3],'-r'); hold on p2 = plot([1 2 3 4],'--g'); hold off % Add markers p1.Marker = 'sq'; p2.Marker = 'o';指定绘图颜色中说明了这种方法。要自定义几个绘图的特征,此方法很有用。但是,它在其他情况下的灵活性较差,例如在循环中绘制数据图或将矩阵数据传递给绘图函数时。在这类情况下,可以更改用于控制 MATLAB 如何自动分配颜色、线型和标记的属性。 注意 以下示例中的有些功能从 R2019b 开始提供,有些功能从 R2020a 开始提供。要在较早的版本中修改绘图颜色和线型,请参阅为何绘图线条有不同颜色?和用于绘图的线型 - LineStyleOrder。 自动分配的工作原理MATLAB 通过循环选择坐标区属性 ColorOrder 中所列的颜色,为绘图对象(例如 Line、Scatter 和 Bar 对象)分配颜色。ColorOrder 属性包含一个 RGB 三元组数组,其中每个 RGB 三元组定义了一种颜色。默认 ColorOrder 数组包含七种颜色。如果您创建的对象数量多于颜色数量,则颜色将会重复。 如果绘图对象支持线型和标记,MATLAB 还会循环使用坐标区属性 LineStyleOrder 的列表中的线型。LineStyleOrder 属性包含一个字符序列元胞数组,其中每个字符序列对应一个线型(或与标记结合的线型)。默认 LineStyleOrder 数组仅包含实线线型 ('-')。ColorOrder 数组中的所有颜色将与 LineStyleOrder 数组中的一个字符序列一起使用,然后再使用下一个序列。MATLAB 对每个新的绘图对象继续使用该循环。如果对象数量多于颜色和字符序列的组合数,则重复该循环。 对于给定的 ColorOrder 和 LineStyleOrder 数组对,特定绘图对象的颜色、线型和标记取决于对象的 SeriesIndex 属性值,该属性是从 R2020a 开始提供的一个新属性。默认情况下,SeriesIndex 属性是一个与对象的创建顺序对应的数字,从 1 开始。MATLAB 使用该数字计算 ColorOrder 和 LineStyleOrder 数组的索引。 例如,使用 ColorOrder 数组中的两种颜色(红色和蓝色)以及 LineStyleOrder 数组中的两种线型(实线和虚线)创建一个坐标区对象。然后绘制五条线。 ax = axes; ax.ColorOrder = [1 0 0; 0 0 1]; ax.LineStyleOrder = {'-','--'}; hold on for i = 1:5 plot([i i+2]) end hold off下表列出了上图中每条线的 SeriesIndex、在 ColorOrder 数组中的索引和在 LineStyleOrder 数组中的索引。 SeriesIndex在 ColorOrder 数组中的索引在 LineStyleOrder 数组中的索引线外观第一条线111红色实线第二条线221蓝色实线第三条线312红色虚线第四条线422蓝色虚线第五条线511红色实线
您可以通过修改坐标区的 ColorOrder 或 LineStyleOrder 属性,或通过更改绘图对象的 SeriesIndex 属性,来更改绘图对象的颜色、线型和标记。 更改颜色方案和线型更改坐标区的 ColorOrder 属性会更改绘图的颜色方案。更改坐标区的 LineStyleOrder 属性会更改绘图中使用的线型(如果使用了标记,则还会更改标记)。例如,使用默认颜色和线型在一个循环中绘制 8 条线。 ax = axes; hold on for i = 0:7 plot([i i+2]) end hold off将 ColorOrder 数组替换为一个包含四种颜色的新数组(也可以使用 colororder 函数替换此数组)。然后将 LineStyleOrder 数组替换为一个包含两种线型的新元胞数组。线条将自动使用新的颜色和线型。 % Updates existing plots in R2019b or later ax.ColorOrder = [1 0 0; 0 1 0; 0 0 1; 0 0 0]; ax.LineStyleOrder = {'-','--'}; 更改 ColorOrder 和 LineStyleOrder 数组的索引更改绘图对象的 SeriesIndex 属性将会更改 ColorOrder 和 LineStyleOrder 数组的索引。当您希望某个对象的颜色、线型和标记与另一个对象匹配时,更改索引非常有用。 例如,在一个循环中绘制四个具有不同波长和相位的正弦波。对于每个正弦波,根据波长设置 SeriesIndex 属性。在生成的绘图中,具有相同波长的正弦波也具有相同的颜色。 x = linspace(0,10,200); ax = axes; hold on for phi = 0:3:3 for t = 1:2 plot(x,sin(x/t + phi),'SeriesIndex',t) % Requires R2020a or later end end hold off要使其中一对正弦波更加突出,请将色序更改为不同的颜色集。 ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8]; 另请参阅函数plot | gca | colororder属性Axes 属性 相关主题指定绘图颜色 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |