着色与配色

所谓着色,怎么着,是技术问题;着什么色,是艺术问题。本节介绍着色和配色的基础知识,以及怎么给不同类型的图形元素进行着色。

颜色的表示

MATLAB中可以使用标准颜色、16进制整数、RGB着色和索引着色等多种方式对图表对象进行着色。

标准颜色是MATLAB中预定义好的颜色,每个标准颜色有一个固定的名字,直接使用名字就可以得到对应的颜色。常见的标准颜色如表1-3所示。

表1-3 标准颜色

颜色 说 明 演示 颜色 说 明 演示
y 黄色 g 绿色
m 品红色 b 蓝色
c 青蓝色 w 白色
r 红色 k 黑色

16进制和RGB着色都是使用红色、绿色和兰色三种颜色混合得到新的颜色。表示颜色的16进制整数用字符串赋给对象颜色属性,字符串类似于'#FF0000'。RGB着色则用一个3元素向量赋给对象颜色属性,类似于[1 0 0]。各分量分别表示红、绿、兰三种颜色,取值0~255,MATLAB中进行了归一化,取值0~1。注意16进制整数中,’#’号后面有6位,与RGB格式对应,前2位表示红色分量,中间2位表示绿色分量,后面2位表示兰色分量,只是值用16进制整数表示。表示颜色的16进制整数最小值为00,对应十进制的0;最大值FF,对应十进制的255。这样,两种表示方法就对应起来了。

表1-4中列出了一些颜色的16进制整数和RGB表示。

表1-4 一些颜色的16进制整数和RGB定义

绿 颜色 16进制整数 演示
0 0 0 黑色 #000000
1 1 1 白色 #FFFFFF
1 0 0 红色 #FF0000
0 1 0 绿色 #00FF00
0 0 1 兰色 #0000FF
1 1 0 黄色 #FFFF00
1 0 1 粉红 #FF00FF
0 1 1 青色 #00FFFF
0.5 0.5 0.5 灰色 #808080
0.5 0 0 深红色 #800000
1 0.62 0.40 紫铜色 #FF9E66
0.49 1 0.83 碧绿色 #7CFFD3

还有一种常用的着色方法叫索引着色,将在稍后详细介绍。使用索引着色,可以对图表进行整体的渲染。

下面的代码绘制复合线形图,并用不同的方法给图元对象着色。

code.matlab
h1=plot([9,5,6,3,5]);
h1.LineWidth=1.5;
h1.Color='r';    %用标准颜色着色
hold on
h2=plot([3,7,5,9,4]);
h2.LineWidth=1.5;
h2.Color='#00FF00';    %用16进制整数着色
h3=plot([5,4,7,5,9]);
h3.LineWidth=1.5;
h3.Color=[0 0 1];    %RGB着色
hold off

运行代码生成图1-7。

Document Image
\[\]

图1-7 给复合线形图着色

配色理论

配色理论中比较有名的是色轮配色理论。有很多种色轮,但是最常用的色轮是12色径向上每种颜色有5个色阶的色轮,如图1-8所示。12种颜色中,红色、黄色和蓝色是三原色,其他颜色都是由这三种颜色混合而成。三原色两两之间一半位置上的橙色、绿色和紫色称为二次色,是由它两边的原色混合而成。剩下的称为三次色,是由它们各自两边的原色和二次色混合而成。

Document Image
\[\]

图1-8 12色色轮

使用色轮配色的方法有下面几种:

  • 单色配色
  • 色轮中每种颜色在径向上都有从浅到深5个色阶,单色配色就是使用同一种颜色的不同色阶对图表进行着色。如图1-9中第一个图所示。
  • 对比色配色
  • 对比色即补色,指的是色轮中直线相对的两种颜色,如图1-8中的红色和绿色,或蓝色和橙色等。对比色适合表现活力,效果如图1-9中右上图所示。
  • 类比色配色
  • 色轮上相邻的颜色称为类比色,如色轮中的黄橙色、橙色和红橙色,它们拥有共同的颜色,都由黄色和红色混合而成。所以,类别色对比度较低,如图1-9中左下角图所示。
  • 三色配色
  • 三色配色,可以使用原色配色和二次色配色,也可以使用分裂补色。所谓分裂补色,是取对比色中的一种颜色,以及另一种颜色两侧的颜色。效果如图1-9中右下角图所示。
Document Image
\[\]

图1-9 用色轮配色

配色工具和资源

对学术图表进行配色,不可避免地要用到一些配色工具。网上有专门的帮助配色的网站,比如Adobe Color, Coolors, Colorspire, ColorBlender等。国内也有一些微信公众号专门讨论学术图表的配色,给出2种、3种或更多种颜色的配色方案和各颜色的RGB值。目前这方面的资料还是比较多的,搜索一下就可以找到。

有时候看到好的配色,想知道各种颜色对应的RGB分量,可用专门的取色器进行获取。一般比较专业的绘图软件和平面设计软件都会提供取色器,网上也有一些在线的取色器。

给一组对象着色

对于线形图、柱状图、条图、面积图和饼图等分类型图表,可以使用colororder函数给一组对象着色。该函数从预先定义好的一组颜色中依次循环取用,用法跟1.1.5小节介绍的Linestyleorder函数类似。MATLAB中已经预先定义了多种颜色序列,如表1-5所示。

表1-5 MATLAB内置的颜色序列

名称 颜色序列
gem
gem12
glow
glow12
sail
reef
meadow
dye
earth

下面的代码使用MATLAB预先定义好的颜色序列绘制复合柱状图。

code.matlab
A=rand(3,5)*10;
tiledlayout(2,2);
ax1=nexttile;
bar(ax1,A)
colororder(ax1,"gem")    %使用内置颜色序列gem
legend(ax1,'Location','northeastoutside')
ax2=nexttile;
bar(ax2,A)
colororder(ax2,"meadow")    %使用内置颜色序列meadow
legend(ax2,'Location','northeastoutside')
ax3=nexttile;
bar(A)
colororder(ax3,"sail")    %使用内置颜色序列sail
legend('Location','northeastoutside')
ax4=nexttile;
bar(A)
colororder(ax4,"earth")    %使用内置颜色序列earth
legend('Location','northeastoutside')

运行代码生成图1-10。

Document Image
\[\]

图1-10 使用MATLAB内置的颜色序列绘图

如果MATLAB内置的颜色序列不够用,还可以自定义颜色序列。自定义颜色序列的示例代码如下所示。

code.matlab
newcolors=[0 1 1;1 1 0;1 0 1];
colororders(newcolors)

下面的代码自定义不同的颜色序列,并用于不同复合柱状图的绘制。

code.matlab
A=rand(3,3)*10;
tiledlayout(2,2);
ax1=nexttile;
bar(ax1,A)
newOrders1=[0.70 0.70 0.70;0.96 0.73 0.85;0.40 0.40 0.59];    %使用自定义颜色序列1
colororder(ax1,newOrders1)
legend(ax1,'Location','northeastoutside')
ax2=nexttile;
bar(ax2,A)
newOrders2=[0.85 0.44 0.44;0.49 0.61 0.90;0.96 0.84 0.56];    %使用自定义颜色序列2
colororder(ax2,newOrders2)
legend(ax2,'Location','northeastoutside')
ax3=nexttile;
bar(ax3,A)
newOrders3=[0.80 0.49 0.51;0.58 0.73 0.65;0.46 0.66 0.73];    %使用自定义颜色序列3
colororder(ax3,newOrders3)
legend(ax3,'Location','northeastoutside')
ax4=nexttile;
bar(ax4,A)
newOrders4=[0.17 0.40 0.53;0.95 0.66 0.23;0.66 0.67 0.73];    %使用自定义颜色序列4
colororder(ax4,newOrders4)
legend(ax4,'Location','northeastoutside')

运行代码生成图1-11。

Document Image
\[\]

图1-11 自定义颜色序列绘制复合柱状图

曲面的索引着色

索引着色需要两张表,第一张表中曲面的每个数据点对应一个索引值,第二张表中每个索引值对应一种颜色,称为颜色查找表。两张表通过索引值建立数据点和颜色值之间的映射关系。

每个MATLAB图形窗口都有一个颜色查找表与之相连。颜色查找表是一个3列矩阵,其长度等于它定义的颜色数目。矩阵的每一行指定3个0和1之间的值,定义一种颜色。这些值定义RGB分量,即红色、绿色和兰色组分的强度。

使用没有变量的colormap函数可以返回当前图形的颜色查找表。例如,MATLAB默认的颜色查找表包括256种颜色。在命令窗口输入:

code.matlab
>> cm=colormap;
>> cm(57,:)
ans =
      0.2473    0.4319    0.9983

MATLAB内置有二十余种颜色查找表,如表1-6所示。可以使用类似下面的语句改变当前坐标系的颜色查找表:

code.matlab
>> colormap(hot)

该语句将当前坐标系的颜色查找表设置为hot表。

表1-6 MATLAB内置的颜色查找表

名称 说 明 色 条
parula 兰色、青色、橙色和黄色之间渐变
turbo 兰色和红色之间渐变
hsv 变化HSV颜色模型中的色度组分
hot 黑色、红色、橘红色、黄色和白色之间渐变
cool 青色和洋红之间渐变
spring 洋红和黄色之间渐变
summer 绿色和黄色之间渐变
autumn 红色向橘黄色、黄色渐变
winter 兰色和绿色渐变
gray 线性灰阶颜色查找表
bone 为含有较高的兰色组分的gray颜色查找表
copper 黑色和亮铜色之间渐变
pink 品红色和白色渐变
sky 白色和天兰色之间渐变
abyss 深兰色和天兰色之间渐变
jet 兰色、青色、黄色、橘红色、红色之间渐变
lines 颜色由坐标系对象的ColorOrder属性和灰色阴影确定的颜色查找表
colorcube 包含RGB颜色空间中尽可能多的规则间隔的颜色
prism 重复红色、橘红色、黄色、绿色、兰色和紫色等六种颜色
flag 由红色、白色、兰色和黑色组成
white 白色

使用与颜色查找表名称相同的函数,指定一个可选参数,可以指定生成的颜色查找表的行数。例如

code.matlab
>> hot(100)

创建一个100×3的矩阵,它的行指定一个颜色查找表所表示的颜色的RGB分量。如果不指定颜色查找表的长度,MATLAB会创建与当前颜色查找表长度相同的颜色查找表。

下面的代码创建3行3列共9个坐标系,在各个坐标系中创建曲面图,并给每个曲面图应用不同的颜色查找表。各曲面图的标题为它采用的颜色查找表的名称。

code.matlab
tiledlayout(3,3);
ax1=nexttile;
h1=surf(peaks);    %绘制曲面
h1.EdgeColor='none';    %删除网格线
colormap(ax1,parula)    %使用颜色查找表parula
title('parula')
camlight    %添加光照
ax2=nexttile;
h2=surf(peaks);
h2.EdgeColor='none';
colormap(ax2,turbo)    %使用颜色查找表turbo
title('turbo')
camlight
ax3=nexttile;
h3=surf(peaks);
h3.EdgeColor='none';
colormap(ax3,hsv)    %使用颜色查找表hsv
title('hsv')
camlight
ax4=nexttile;
h4=surf(peaks);
h4.EdgeColor='none';
colormap(ax4,hot)    %使用颜色查找表hot
title('hot')
camlight
ax5=nexttile;
h5=surf(peaks);
h5.EdgeColor='none';
colormap(ax5,cool)    %使用颜色查找表cool
title('cool')
camlight
ax6=nexttile;
h6=surf(peaks);
h6.EdgeColor='none';
colormap(ax6,spring)    %使用颜色查找表spring
title('spring')
camlight
ax7=nexttile;
h7=surf(peaks);
h7.EdgeColor='none';
colormap(ax7,summer)    %使用颜色查找表summer
title('summer')
camlight
ax8=nexttile;
h8=surf(peaks);
h8.EdgeColor='none';
colormap(ax8,autumn)    %使用颜色查找表autumn
title('autumn')
camlight
ax9=nexttile;
h9=surf(peaks);
h9.EdgeColor='none';
colormap(ax9,winter)    %使用颜色查找表winter
title('winter')
camlight

运行代码生成图1-12。

Document Image
\[\]

图1-12 创建曲面图并应用不同的颜色查找表

也可以自定义颜色查找表。可以直接用N行3列的矩阵指定颜色值,也可以创建图形后用编辑器在原有颜色查找表的基础上进行修改。

下面的例子直接指定7行3列的矩阵建立颜色查找表,并应用到曲面。

code.matlab
map=uint8([173 175 177;    %自定义颜色查找表,R,G,B
    216 217 218;
    236 154 132;
    228 228 85;
    71 88 162;
    224 141 139;
    175 140 187]);
h=surf(peaks);
h.EdgeColor='none';
colormap(map)    %使用自定义颜色查找表
title('My Colormap')
colorbar

运行代码生成图1-13。

Document Image
\[\]

图1-13 使用自定义颜色查找表

为了方便设置图形的颜色查找表,MATLAB提供了一个颜色查找表编辑器。在命令窗口用colormapeditor命令启动颜色查找表编辑器,并在编辑器中显示当前图形窗口的颜色查找表。如下所示,在命令窗口键入:

code.matlab
>> colormapeditor

打开“颜色查找表编辑器”窗口,如图1-14所示。

Document Image Document Image
\[\]

图1-14“颜色查找表编辑器”窗口 图1-15 在颜色查找表编辑器中调整颜色

编辑器中,当前图形窗口颜色查找表中的颜色用一个横向的色条表示。如图1-15所示,在“指定颜色”选项卡中,色条上方有几个节点指针,移动节点指针,可以改变颜色查找表中的颜色范围,并改变当前图形的显示。在“颜色查找表”下拉式列表框中选择颜色查找表。方框中显示颜色的索引值和颜色数据。在“编辑大小和颜色空间”下拉式列表框中进行选择,可以转换颜色空间,这里提供了RGB和HSV两种颜色空间。在“设置颜色查找表范围”下拉式列表框中可以指定颜色查找表范围的最小值和最大值。

选择和移动节点指针,可以改变颜色查找表中颜色的范围。编辑器会在两个节点指针之间进行颜色插值。双击节点指针,并在弹出的颜色选择器中进行选择,可以改变节点单元的颜色。改变节点颜色以后,根据相邻节点的颜色重新进行插值计算。针对节点指针有多种操作,如表1-7所示。

表1-7 针对节点的操作说明

操 作 说 明
添加一个节点 在对应的节点单元下方单击
选择一个节点 单击节点
移动一个节点 用鼠标选择或拖拉节点,或者选择节点并单击向左或向右键
删除一个节点 选择节点,然后单击Delete键
显示节点的颜色选择器 双击节点

在命令窗口输入下面的命令行:

code.matlab
>> h=surf(peaks);
>> h.EdgeColor='none';
>> camlight

生成图1-16。这是使用默认的颜色查找表得到的曲面图。

Document Image Document Image
\[\]

图1-16 使用默认的颜色查找表 图1-17 调整颜色查找表以后的图形显示

用colormapeditor命令启动颜色查找表编辑器,在颜色查找表编辑器中重新设置颜色,如图1-15所示,另存修改后的Colormap并导入,图1-16随即变成图1-17所示的颜色。

曲面的真彩色着色

24位显示的计算机系统可以显示超过1600万种颜色。有了这种能力,可以将颜色数据直接定义成RGB值,而不需要用索引值进行颜色映射。直接定义数据点RGB值的着色方式称为真彩色着色。

如图1-18所示,用一个m×n×3的数组指定真彩色,其中m×n表示曲面的网格大小为m行n列。图1-18中左图为定义曲面图的矩阵,右图为定义该图RGB值的矩阵。

Document Image
\[\]

图1-18 定义曲面图及其真彩色的矩阵

下面的代码创建一个真彩色随机着色的曲面图。

code.matlab
Z=peaks(25);
C(:,:,1)=rand(25);
C(:,:,2)=rand(25);
C(:,:,3)=rand(25);
h1=surf(Z,C);
h1.EdgeColor='none';

效果如图1-19所示。

Document Image
\[\]

图1-19 一个随机着色的曲面图 图1-20 用索引值设置曲面属性

也可以设置曲面属性,如

code.matlab
surf(Z,C,'FaceColor','interp','FaceLighting','phong')
camlight right

绘图效果如图1-20所示。

注意,绘曲面图时使用的颜色数据的类型确定MATLAB选择什么样的技术进行着色。如果没有提供颜色数据,MATLAB根据z值生成颜色查找表的索引值;如果指定一个颜色数据数组,其大小与z数据的相同,使用索引着色;如果指定一个m×n×3的颜色数据数组,为m×n数据数组中的每个元素定义一个RGB颜色分量,使用真彩色着色。

面片着色

前面两节介绍的是规则网格曲面,MATLAB中不规则曲面用patch(面片)对象进行描述。图1-21中的人脸模型可以看作一个面片,该面片由很多三角形、四边形和多边形的更小的面组合而成。这些三角形、四边形和多边形的面称为该面片的小面。后面会频繁提到小面。

Document Image
\[\]

图1-21 面片

创建面片

首先介绍二维面片的创建。面片的表示方法有顶点/小面表示法和顶点/颜色表示法两种。下面用两种方法创建一个等腰三角形和一个多边形区域。

顶点/小面表示法用vert变量定义各个点的坐标,按照先后顺序取得各个顶点的编号。face变量按逆时针方向指定组成小面的顶点的编号,然后用patch函数创建面片。

code.matlab
vert=[1 2;3 2;2 4];
face=[1 2 3];
patch('Faces',face, 'Vertices',vert, 'FaceColor', 'none');

顶点/颜色表示法用x和y定义各顶点的横坐标和纵坐标,也是按逆时针方向排列。用tcolor定义各顶点的颜色,然后用patch函数创建面片。

code.matlab
x=[3;4;5;6;6.5;4];
y=[4;2.5;4;3;4;6];
tcolor(1,1:6)=[. .7 .7 .7];
patch(x,y, tcolor);
axis([1 7 1 7])

运行代码生成图1-22。

Document Image Document Image
\[\]

图1-22 创建多边形并着色 图1-23 用patch函数创建一个扇面

下面用这两种方法创建1个有3个小面的扇面,它存在于三维空间。

首先用小面坐标和颜色进行创建。用x, y和z向量定义小面的顶点,用tcolor向量定义小面的颜色,第一个索引值为面片编号,第二个索引值为小面编号,第三个索引值为小面顶点的编号。在命令窗口键入下面的命令行:

code.matlab
x=[0 0 0;1 .5 0;1 1 .5];
y=[0 0 0;.5 1 1;0 .5 1];
z=[.;1 1 1;1 1 1];
tcolor(1,1,1:3)=[.];
tcolor(1,2,1:3)=[1 1 1];
tcolor(1,3,1:3)=[.];
patch(x,y,z,tcolor);
axis([0 1 0 1 0 2]);
view(3)

生成图1-23,正好是3个小三角形组成的扇面。

下面用第2种方法进行创建。用vert向量定义各顶点,用fac向量定义小面。键入下面的代码:

code.matlab
vert=[0 0 .5;1 0 1;1 .5 1;.5 1 1;0 1 1];
fac=[1 3 2;1 4 3;1 5 4];
tcolor=[.;1 1 1;.3 .3 .3];
patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,'FaceColor','flat');
axis([0 1 0 1 0 2]);
view(3)

生成与图1-23相同的结果。

获取图表中的面片对象

MATLAB很多图表中包含面片对象,可以通过索引获取该面片对象并修改它的属性,根据自己的喜好对图表进行美化。

下面的代码创建一个三维饼图,然后获取图中的面片并重新配色。在命令窗口输入:

code.matlab
>> data=[2 8 5 3 9];
>> labels=["<=18" "18-35"  "32-45"  "42-60" ">60"];
>> ep=[1 0 0 0 0];
>> h=pie3(data,ep,labels);
>> camlight
>> h
h =
  1×20 graphics 数组:
  列 15
    Patch      Surface    Patch      Text       Patch
  列 610
    Surface    Patch      Text       Patch      Surface
  列 1115
    Patch      Text       Patch      Surface    Patch
  列 1620
    Text       Patch      Surface    Patch      Text

h是一个包含20个句柄对象的数组,5个扇区,所以每个扇区有4个对象,包括上、下平面、圆弧侧面和标签。其中,上下平面用面片表示,圆弧侧面用曲面表示。通过对h进行索引可以获取指定的句柄对象。生成的图如图1-24所示。

下面去掉面的边线颜色,修改扇区标签的字体大小。

code.matlab
>> for i=1:length(h)
    h(i).EdgeColor='none';
    if class(h1(i))=="matlab.graphics.primitive.Text"
        h1(i).FontSize=6;
    end
end

修改各扇区上平面和圆弧侧面的颜色。

code.matlab
>> h(3).FaceColor='#9DD0C7';
>> h(6).FaceColor='#9180AC';
>> h(7).FaceColor='#9180AC';
>> h(10).FaceColor='#D9BDD8';
>> h(11).FaceColor='#D9BDD8';
>> h(14).FaceColor='#E58579';
>> h(15).FaceColor='#E58579';
>> h(18).FaceColor='#8AB1D2';
>> h(19).FaceColor='#8AB1D2';

生成图1-25。

Document Image Document Image
\[\]

图1-24 三维饼图 图1-25 修改三维饼图的颜色

面片面的着色

面片面的着色,主要有单色着色、刻面着色和插值着色三种。下面分面片只有一个小面和面片有多个小面的情况进行介绍。

面片只有一个小面的情况

面片只有一个小面时,实际上就是一个多边形。

下面的代码创建一个多边形,多边形的面用绿色填充,边为黑色。

code.matlab
x=[3;4;5;6;6.5;4];
y=[4;2.5;4;3;4;6];
tcolor=[.7;.7;.7;.7;.7;.7];
patch(x,y,tcolor);
axis equal

生成的多边形如图1-26所示。

Document Image Document Image
\[\]

图1-26 生成多边形 图1-27 多边形的渐变着色

第1个和最后1个顶点不需要一致,MATLAB会自动闭合面片的每一个小面。实际上,通常最好只将每个顶点定义一次,特别是使用插值法进行着色时。

下面重新指定tcolor的值,设置FaceColor属性的值为interp,对上面的多边形进行插值着色。

code.matlab
x=[3;4;5;6;6.5;4];
y=[4;2.5;4;3;4;6];
tcolor=[.1;.2;.3;.4;.5;.7];
patch(x,y,tcolor,'FaceColor','interp');
colormap cool;
axis equal

显示效果如图1-27所示。

面片有多个小面的情况

单色着色时将面片的FaceColor属性值设置为单一颜色,此时面片上所有小面的颜色都设置为该颜色。下面对图1-23中的面片进行单色着色,设置颜色为绿色。在MATLAB命令窗口输入:

code.matlab
vert=[0 0 .5;1 0 1;1 .5 1;.5 1 1;0 1 1];
fac=[1 3 2;1 4 3;1 5 4];
tcolor=[.;1 1 0;1 0 0;0 1 0;0 0 1];
patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,'FaceColor','g');
axis([0 1 0 1 0 2]);
view(3)

生成图1-28。

Document Image Document Image
\[\]

图1-28 单色着色 图1-29 插值着色

刻面着色时将面片的FaceColor属性值设置为flat。图1-23中实现了面片面的刻面着色。

插值着色时将面片的FaceColor属性值设置interp。下面对图1-23中的面片进行插值着色。在MATLAB命令窗口输入:

code.matlab
vert=[0 0 .5;1 0 1;1 .5 1;.5 1 1;0 1 1];
fac=[1 3 2;1 4 3;1 5 4];
tcolor=[.;1 1 0;1 0 0;0 1 0;0 0 1];
patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,'FaceColor','interp');
axis([0 1 0 1 0 2]);
view(3)

生成图1-29。注意本例和图1-23中tcolor变量值的设置,使用插值着色,需要用面片所有顶点的颜色进行计算,所以在tcolor中必须指定所有顶点的颜色。而图1-23中只需要指定每个小面的颜色就可以了。

面片边的着色

通过给Patch对象的EdgeColor属性赋值,可以设置面片边的颜色。该属性的设置与ForeColor属性的设置类同。默认时,面片边的颜色为黑色。

下面创建一个面片,将FaceColor属性值设置为flat,将EdgeColor属性值设置为flat,线宽设置为2。

code.matlab
x=[3;4;5;6;6.5;4];
y=[4;2.5;4;3;4;6];
tcolor=[.1;.2;.3;.4;.5;.7];
patch(x,y,tcolor,'FaceColor','flat',...
    'EdgeColor','flat', 'LineWidth',2,...
    'Marker','o', 'MarkerFaceColor', 'flat');
colormap cool;
axis equal

生成图1-30。可见,刻面着色时,边线的颜色为线段起点的颜色。注意各顶点的排列方向为逆时针方向。

将FaceColor属性的值设置为interp,将EdgeColor属性的值设置为none。

code.matlab
patch(x,y,tcolor,'FaceColor','interp', 'EdgeColor','none');

生成图1-31。此时不显示边线。

Document Image Document Image
\[\]

图1-30 设置边线颜色 图1-31 不显示面片的边线