pcolor
伪彩图

说明
pcolor( 使用矩阵 C)C 中的值创建一个伪彩图。伪彩图以彩色单元(称为面)阵列形式显示矩阵数据。MATLAB® 在 x-y 平面上创建该图的单一着色平面图。该平面由对应于各面的角(即顶点)的 x 坐标和 y 坐标的网格定义。网格覆盖区域 X=1:n 和 Y=1:m,其中 [m,n] = size(C)。矩阵 C 指定顶点处的颜色。每个面的颜色取决于其四个周围顶点之一的颜色。在这四个顶点中,x-y 网格中出现的第一个顶点决定该面的颜色。
pcolor(___, 使用一个或多个名称-值参量设置绘图的属性。例如,可以指定颜色或隐藏绘图的网格线。有关属性列表,请参阅 Surface 属性。 (自 R2024b 起)Name=Value)
s = pcolor(___) 返回 Surface 对象。创建绘图后,使用 s 设置绘图属性。有关属性列表,请参阅 Surface 属性。
示例
创建坐标向量 X 和 Y 以及名为 mymap 的颜色图,其中包含五种颜色:红色、绿色、蓝色、黄色和黑色。
X = [1 2 3; 1 2 3; 1 2 3]; Y = X'; mymap = [1 0 0; 0 1 0; 0 0 1; 1 1 0; 0 0 0];
创建矩阵 C,它将颜色图映射到九个顶点。九个顶点中的四个顶点决定面的颜色。指定这些顶点的颜色,使各面分别为 (1)、绿色 (2)、蓝色 (3) 和黄色 (4)。将其他顶点上的颜色设置为黑色 (5)。
C = [3 4 5; 1 2 5; 5 5 5];
对这些面绘图,并调用 colormap 函数以用 mymap 替换默认颜色图。
pcolor(X,Y,C) colormap(mymap)

哈达玛矩阵的元素是 1 或 -1。我们可以使用双色颜色图来可视化此矩阵。
创建一个 20×20 哈达玛矩阵。然后用黑白颜色图绘制该矩阵。使用 axis 函数反转 y 轴的方向,并将轴线设置为相等的长度。
C = hadamard(20); pcolor(C) colormap(gray(2)) axis ij axis square

创建颜色矩阵 C。然后创建 C 的伪彩图,并将 Surface 对象存储在返回参量 s 中。
C = [1 2 3; 4 5 6; 7 8 9]; s = pcolor(C);

通过设置 s 的 EdgeColor 属性来更改边框颜色。通过设置 LineWidth 属性使边框更粗。
s.EdgeColor = [1 0.7 0.3]; s.LineWidth = 6;

创建颜色矩阵 C。然后创建 C 的伪彩图,并将 Surface 对象存储在返回参量 s 中。
C = [5 13 9 7 12; 11 2 14 8 10; 6 1 3 4 15]; s = pcolor(C);

要跨面进行颜色插值,请将 s 的 FaceColor 属性设置为 'interp'。
s.FaceColor = 'interp';
创建矩阵 X 和 Y,它们定义顶点的固定间隔网格。通过计算 Y 的对数得到矩阵 LY 。然后创建矩阵 C,其中包含交替的颜色索引行组。
[X,Y] = meshgrid(1:20); LY = log(Y); colorscale = [1:20; 20:-1:1]; C = repmat(colorscale,10,1);
使用 C 中指定的颜色绘制 X 和 LY。然后调整 y 轴上的刻度标签。
s = pcolor(X,LY,C);
tickvals = LY(2:2:20,1)';
set(gca,'YTick',tickvals);
创建矩阵 X 和 Y,它们定义顶点的固定间隔网格。通过计算 X 和 Y 的函数得到矩阵 XX 和 YY 。然后创建矩阵 C,其中包含交替的颜色索引行组。
[X,Y] = meshgrid(-3:6/17:3); XX = 2*X.*Y; YY = X.^2 - Y.^2; colorscale = [1:18; 18:-1:1]; C = repmat(colorscale,9,1);
使用 C 中的颜色绘制 XX 和 YY。
pcolor(XX,YY,C);

调用 tiledlayout 函数以创建 1×2 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。通过将这些坐标区指定为 pcolor 的第一个参量,创建两个伪彩图。
tiledlayout(1,2) % Left plot ax1 = nexttile; C1 = rand(20,10); pcolor(ax1,C1) % Right plot ax2 = nexttile; C2 = rand(50,10); pcolor(ax2,C2)

输入参数
颜色矩阵,包含颜色图中的索引。C 中的值将颜色图数组中的颜色映射到每个面周围的顶点。一个面的颜色取决于它的四个顶点之一的颜色。在这四个顶点中,首先出现在 X 和 Y 中的那个顶点决定该面的颜色。如果您没有指定 X 和 Y,则 MATLAB 使用 X=1:n 和 Y=1:m,其中 [m,n] = size(C)。由于顶点颜色和面颜色之间的这种关系,C 的最后一行和最后一列中的值都不会在绘图中表示。

注意
面的第一个顶点是最靠近对应矩阵左上角的顶点。但是,由于 y 轴从下到上递增,绘图中显示的第一个顶点通常位于面的左下角。要获得您要的效果,您可能需要更改 y 轴的方向或矩阵 C 的方向。
对于显示顶点和面的颜色之间关系的简单示例,请参阅用四种颜色绘制四个面。
C 中的值会缩放至颜色图的完整范围。C 中的最小值映射到颜色图数组中的第一行。C 中的最大值映射到颜色图数组中的最后一行。C 中的中间值线性映射到颜色图数组中的中间行。您可以使用 clim 函数调整此映射。
在 R2022a 之前的版本中: 使用 caxis 函数,它具有与 clim 相同的语法和参量。
C 的值存储在 Surface 对象的 CData 属性中。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
x 坐标,指定为大小与 C 相同的矩阵或长度为 n 的向量,其中 [m,n] = size(C)。X 的默认值是向量 (1:n)。
要创建顶点的矩形网格,请将 X 指定为以下任一项:
要创建参数化网格,请创建一个矩形网格,并通过数学函数传递它。
示例: X = 1:10
示例: X = [1 2 3; 1 2 3; 1 2 3]
示例: [X,Y] = meshgrid(1:10)
Surface 对象的 XData 属性存储 x 坐标。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration
y 坐标,指定为大小与 C 相同的矩阵或长度为 m 的向量,其中 [m,n] = size(C)。Y 的默认值是向量 (1:m)。
要创建顶点的矩形网格,请将 Y 指定为以下任一项:
要创建参数化网格,请创建一个矩形网格,并通过数学函数传递它。
示例: Y = 1:10
示例: Y = [1 1 1; 2 2 2; 3 3 3]
示例: [X,Y] = meshgrid(1:10)
Surface 对象的 YData 属性存储 y 坐标。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration
绘图所用的坐标区,指定为 Axes 或 PolarAxes 对象。如果未指定坐标区,则 pcolor 在当前坐标区中绘图或创建一个 Axes 对象(笛卡尔坐标区)。
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: pcolor([1 2 3; 4 5 6; 7 8 9],FaceColor="interp") 跨面进行颜色插值。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 Surface 属性。
面颜色,指定为下表中的值之一。
| 值 | 描述 |
|---|---|
'flat' | 根据
|
'interp' | 根据
|
| RGB 三元组、十六进制颜色代码或颜色名称 | 对所有面使用指定的颜色。此选项不会使用
|
'texturemap' | 变换 CData 中的颜色数据,以便其符合曲面。 |
'none' | 不绘制面。 |
RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符向量或字符串标量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
边线颜色,指定为下面列出的值之一。默认颜色 [0 0 0] 对应于黑边。
| 值 | 描述 |
|---|---|
'none' | 不绘制边。 |
'flat' | 根据
|
'interp' | 根据
|
| RGB 三元组、十六进制颜色代码或颜色名称 | 对所有边使用指定的颜色。此选项不会使用
|
RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符向量或字符串标量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
线型,指定为下表中列出的选项之一。
| 线型 | 描述 | 表示的线条 |
|---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
算法
使用 pcolor、image 和 imagesc 函数显示彩色单元矩形阵列。颜色矩阵 C 和彩色单元之间的关系在每种情况下都不同。
pcolor(C)使用C定义顶点颜色,将值缩放到覆盖颜色图的整个范围。C的大小确定顶点的数目。C中的值将当前颜色图中的颜色映射到每个单元周围的顶点。image(C)使用C定义单元格颜色,将值直接映射到颜色图。C的大小确定单元的数目。imagesc(C)使用C定义单元格颜色,将值缩放到覆盖颜色图的整个范围。C的大小确定单元的数目。
扩展功能
pcolor 函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)



















