所谓着色,怎么着,是技术问题;着什么色,是艺术问题。本节介绍着色和配色的基础知识,以及怎么给不同类型的图形元素进行着色。
颜色的表示
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 |
还有一种常用的着色方法叫索引着色,将在稍后详细介绍。使用索引着色,可以对图表进行整体的渲染。
下面的代码绘制复合线形图,并用不同的方法给图元对象着色。
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。
图1-7 给复合线形图着色
配色理论
配色理论中比较有名的是色轮配色理论。有很多种色轮,但是最常用的色轮是12色径向上每种颜色有5个色阶的色轮,如图1-8所示。12种颜色中,红色、黄色和蓝色是三原色,其他颜色都是由这三种颜色混合而成。三原色两两之间一半位置上的橙色、绿色和紫色称为二次色,是由它两边的原色混合而成。剩下的称为三次色,是由它们各自两边的原色和二次色混合而成。
图1-8 12色色轮
使用色轮配色的方法有下面几种:
- 单色配色
- 色轮中每种颜色在径向上都有从浅到深5个色阶,单色配色就是使用同一种颜色的不同色阶对图表进行着色。如图1-9中第一个图所示。
- 对比色配色
- 对比色即补色,指的是色轮中直线相对的两种颜色,如图1-8中的红色和绿色,或蓝色和橙色等。对比色适合表现活力,效果如图1-9中右上图所示。
- 类比色配色
- 色轮上相邻的颜色称为类比色,如色轮中的黄橙色、橙色和红橙色,它们拥有共同的颜色,都由黄色和红色混合而成。所以,类别色对比度较低,如图1-9中左下角图所示。
- 三色配色
- 三色配色,可以使用原色配色和二次色配色,也可以使用分裂补色。所谓分裂补色,是取对比色中的一种颜色,以及另一种颜色两侧的颜色。效果如图1-9中右下角图所示。
图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预先定义好的颜色序列绘制复合柱状图。
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。
图1-10 使用MATLAB内置的颜色序列绘图
如果MATLAB内置的颜色序列不够用,还可以自定义颜色序列。自定义颜色序列的示例代码如下所示。
newcolors=[0 1 1;1 1 0;1 0 1];
colororders(newcolors)
下面的代码自定义不同的颜色序列,并用于不同复合柱状图的绘制。
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。
图1-11 自定义颜色序列绘制复合柱状图
曲面的索引着色
索引着色需要两张表,第一张表中曲面的每个数据点对应一个索引值,第二张表中每个索引值对应一种颜色,称为颜色查找表。两张表通过索引值建立数据点和颜色值之间的映射关系。
每个MATLAB图形窗口都有一个颜色查找表与之相连。颜色查找表是一个3列矩阵,其长度等于它定义的颜色数目。矩阵的每一行指定3个0和1之间的值,定义一种颜色。这些值定义RGB分量,即红色、绿色和兰色组分的强度。
使用没有变量的colormap函数可以返回当前图形的颜色查找表。例如,MATLAB默认的颜色查找表包括256种颜色。在命令窗口输入:
>> cm=colormap;
>> cm(57,:)
ans =
0.2473 0.4319 0.9983
MATLAB内置有二十余种颜色查找表,如表1-6所示。可以使用类似下面的语句改变当前坐标系的颜色查找表:
>> 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 | 白色 |
使用与颜色查找表名称相同的函数,指定一个可选参数,可以指定生成的颜色查找表的行数。例如
>> hot(100)
创建一个100×3的矩阵,它的行指定一个颜色查找表所表示的颜色的RGB分量。如果不指定颜色查找表的长度,MATLAB会创建与当前颜色查找表长度相同的颜色查找表。
下面的代码创建3行3列共9个坐标系,在各个坐标系中创建曲面图,并给每个曲面图应用不同的颜色查找表。各曲面图的标题为它采用的颜色查找表的名称。
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。
图1-12 创建曲面图并应用不同的颜色查找表
也可以自定义颜色查找表。可以直接用N行3列的矩阵指定颜色值,也可以创建图形后用编辑器在原有颜色查找表的基础上进行修改。
下面的例子直接指定7行3列的矩阵建立颜色查找表,并应用到曲面。
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。
图1-13 使用自定义颜色查找表
为了方便设置图形的颜色查找表,MATLAB提供了一个颜色查找表编辑器。在命令窗口用colormapeditor命令启动颜色查找表编辑器,并在编辑器中显示当前图形窗口的颜色查找表。如下所示,在命令窗口键入:
>> colormapeditor
打开“颜色查找表编辑器”窗口,如图1-14所示。
图1-14“颜色查找表编辑器”窗口 图1-15 在颜色查找表编辑器中调整颜色
编辑器中,当前图形窗口颜色查找表中的颜色用一个横向的色条表示。如图1-15所示,在“指定颜色”选项卡中,色条上方有几个节点指针,移动节点指针,可以改变颜色查找表中的颜色范围,并改变当前图形的显示。在“颜色查找表”下拉式列表框中选择颜色查找表。方框中显示颜色的索引值和颜色数据。在“编辑大小和颜色空间”下拉式列表框中进行选择,可以转换颜色空间,这里提供了RGB和HSV两种颜色空间。在“设置颜色查找表范围”下拉式列表框中可以指定颜色查找表范围的最小值和最大值。
选择和移动节点指针,可以改变颜色查找表中颜色的范围。编辑器会在两个节点指针之间进行颜色插值。双击节点指针,并在弹出的颜色选择器中进行选择,可以改变节点单元的颜色。改变节点颜色以后,根据相邻节点的颜色重新进行插值计算。针对节点指针有多种操作,如表1-7所示。
表1-7 针对节点的操作说明
| 操 作 | 说 明 |
|---|---|
| 添加一个节点 | 在对应的节点单元下方单击 |
| 选择一个节点 | 单击节点 |
| 移动一个节点 | 用鼠标选择或拖拉节点,或者选择节点并单击向左或向右键 |
| 删除一个节点 | 选择节点,然后单击Delete键 |
| 显示节点的颜色选择器 | 双击节点 |
在命令窗口输入下面的命令行:
>> h=surf(peaks);
>> h.EdgeColor='none';
>> camlight
生成图1-16。这是使用默认的颜色查找表得到的曲面图。
图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值的矩阵。
图1-18 定义曲面图及其真彩色的矩阵
下面的代码创建一个真彩色随机着色的曲面图。
Z=peaks(25);
C(:,:,1)=rand(25);
C(:,:,2)=rand(25);
C(:,:,3)=rand(25);
h1=surf(Z,C);
h1.EdgeColor='none';
效果如图1-19所示。
图1-19 一个随机着色的曲面图 图1-20 用索引值设置曲面属性
也可以设置曲面属性,如
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中的人脸模型可以看作一个面片,该面片由很多三角形、四边形和多边形的更小的面组合而成。这些三角形、四边形和多边形的面称为该面片的小面。后面会频繁提到小面。
图1-21 面片
创建面片
首先介绍二维面片的创建。面片的表示方法有顶点/小面表示法和顶点/颜色表示法两种。下面用两种方法创建一个等腰三角形和一个多边形区域。
顶点/小面表示法用vert变量定义各个点的坐标,按照先后顺序取得各个顶点的编号。face变量按逆时针方向指定组成小面的顶点的编号,然后用patch函数创建面片。
vert=[1 2;3 2;2 4];
face=[1 2 3];
patch('Faces',face, 'Vertices',vert, 'FaceColor', 'none');
顶点/颜色表示法用x和y定义各顶点的横坐标和纵坐标,也是按逆时针方向排列。用tcolor定义各顶点的颜色,然后用patch函数创建面片。
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。
图1-22 创建多边形并着色 图1-23 用patch函数创建一个扇面
下面用这两种方法创建1个有3个小面的扇面,它存在于三维空间。
首先用小面坐标和颜色进行创建。用x, y和z向量定义小面的顶点,用tcolor向量定义小面的颜色,第一个索引值为面片编号,第二个索引值为小面编号,第三个索引值为小面顶点的编号。在命令窗口键入下面的命令行:
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向量定义小面。键入下面的代码:
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很多图表中包含面片对象,可以通过索引获取该面片对象并修改它的属性,根据自己的喜好对图表进行美化。
下面的代码创建一个三维饼图,然后获取图中的面片并重新配色。在命令窗口输入:
>> 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 数组:
列 1 至 5
Patch Surface Patch Text Patch
列 6 至 10
Surface Patch Text Patch Surface
列 11 至 15
Patch Text Patch Surface Patch
列 16 至 20
Text Patch Surface Patch Text
h是一个包含20个句柄对象的数组,5个扇区,所以每个扇区有4个对象,包括上、下平面、圆弧侧面和标签。其中,上下平面用面片表示,圆弧侧面用曲面表示。通过对h进行索引可以获取指定的句柄对象。生成的图如图1-24所示。
下面去掉面的边线颜色,修改扇区标签的字体大小。
>> for i=1:length(h)
h(i).EdgeColor='none';
if class(h1(i))=="matlab.graphics.primitive.Text"
h1(i).FontSize=6;
end
end
修改各扇区上平面和圆弧侧面的颜色。
>> 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。
图1-24 三维饼图 图1-25 修改三维饼图的颜色
面片面的着色
面片面的着色,主要有单色着色、刻面着色和插值着色三种。下面分面片只有一个小面和面片有多个小面的情况进行介绍。
面片只有一个小面的情况
面片只有一个小面时,实际上就是一个多边形。
下面的代码创建一个多边形,多边形的面用绿色填充,边为黑色。
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所示。
图1-26 生成多边形 图1-27 多边形的渐变着色
第1个和最后1个顶点不需要一致,MATLAB会自动闭合面片的每一个小面。实际上,通常最好只将每个顶点定义一次,特别是使用插值法进行着色时。
下面重新指定tcolor的值,设置FaceColor属性的值为interp,对上面的多边形进行插值着色。
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命令窗口输入:
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。
图1-28 单色着色 图1-29 插值着色
刻面着色时将面片的FaceColor属性值设置为flat。图1-23中实现了面片面的刻面着色。
插值着色时将面片的FaceColor属性值设置interp。下面对图1-23中的面片进行插值着色。在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。
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。
patch(x,y,tcolor,'FaceColor','interp', 'EdgeColor','none');
生成图1-31。此时不显示边线。
图1-30 设置边线颜色 图1-31 不显示面片的边线