Matlab填充功能函数fill

Matlab填充函数fill函数

前两篇文章讲解了matlab的二维绘图功能,包含有plot、fplot、ezplot、plotyy,然后后续还包括有三个特殊的统计学相关的绘图函数,其中有hist、bar、barh、pie、pie3 这几种,但是对于平面绘图中还有一个很重要的函数就是fill填充函数,该函数能够填充任意的形状,比较的灵活。

  • fill函数的主要语法总共有以下几种:

    • fill(X,Y,C);
      fill(X1,Y1,C1,...,Xn,Yn,Cn);
      fill(___,Name,Value);
      fill(ax,___);
      p = fill(___);
      
    • 第一个语法很明确,就是填充一个区域为一种颜色。fill(X,Y,C)

      • 需要绘制一个区域,那么直接将X,Y指定为向量,C指定为颜色。

        X = [1,3,9];
        Y = [2,5,8];
        subplot(1,2,1)
        fill(X,Y,'r')
        subplot(1,2,2)
        fill(X,Y,[1;0.5;0]);
        % 如上所绘制的图像将是以点[1,2],[3,5],[9,8]三个点连成的区域。
        % 对于C参数的设置,可以做文章,用来对颜色进行渐变设置
        

        上面的代码绘制的图形如下图所示:

        • 如果需要在一个figure中绘制多个区域,那么则需要将X,Y指定为矩阵即可,每一列看成一个图形。

          X = [1 5;3 10;9 4];
          Y = [2 3;5 1;8 1];
          C = [1 0;0.5 0.5;0 1]
          fill(X,Y,C);
          % 可以将X和Y一起看,上面的X和Y矩阵总共有两列,每一列都相当于上面的单个图形绘制
          

          所以上面的代码绘制的图形如下图所示:

          • 但是一般在同一个figure中绘制多个图形 可以不通过矩阵的方式绘制可能会更灵活一些

            X = [1,3,9];
            Y = [2,5,8];
            fill(X,Y,'r')
            hold on;  % 使用hold on语法将图形绘制一个figure中
            X = [5,9,8,4];
            Y = [3,3,1,1];
            fill(X,Y,'g')
            axis([0,10,-1,10]);
            

            上述代码绘制的结果如下图所示:

          • 后面几个语法除了绘制填充图形之外,也有对填充内容进行属性设置的调整参数。其中第二个语法也是绘制多个区域,但是不推荐使用,直接使用hold on来完成不同填充区域绘制即可。后面的几个语法都将在下例中体现。

            • 例如绘制不同面透明度的图形,参考代码如下:

              x = [1 3 4 3 1 0];
              y = [0 0 2 4 4 2];
              hold on
              fill(x,y,'r','FaceAlpha',0.3,'EdgeColor',[0.5 0.2 0.55],'LineWidth',3);
              % 上句是对属性进行了设置,其中
              % FaceAlpha:表示填充面颜色的面透明度
              % EdgeColor:表示填充面的边缘颜色
              % LineWidth:表示填充面边缘的宽度
              p = fill(x+2,y,'m','FaceAlpha',0.3);  % 最后一种的语法
              p.LineWidth = 3;
              p.EdgeColor = [1 0 0];
              p.EdgeAlpha = 0.8;
              % EdgeAlpha:表示填充面边缘的透明度
              fill(x+1,y+2,'y','FaceAlpha',0.3);
              % 该方法未使用矩阵的方式绘制多种图形,而是通过hold on的方式
              

              最终绘制的图形如下所示:

            • 当然,在绘制图形后,如若所设置的图形已经固定,后期不需要改动,但是又有别的程序控制该图形运动,例如小车。那么在绘制图形时,最好通过相对的方法填充区块,先定义出一个点,然后根据这个点去创建别的点,这样在调用该图形的时候,只需要改变这一个点即可。

            • 到这,matlab的二维绘图功能就此结束。下个坑有俩,一个是三维绘图的学习,还有个时matlab GUI学习,然后写一个自动绘图APP。