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。
-
-
-
-
-