控制绘图函数如何选择颜色和线型 您所在的位置:网站首页 调用函数怎么用 控制绘图函数如何选择颜色和线型

控制绘图函数如何选择颜色和线型

2023-05-18 05:53| 来源: 网络整理| 查看: 265

控制绘图函数如何选择颜色和线型

当您在同一坐标区内绘制多个数据集时,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 实验室设备网 版权所有