我如何使用多个colormaps R2014a在单个人物和早些时候吗?

282(30天)
我有一个我想使用多个colormaps图。我还想知道colormaps存储和它的一些属性。例子将是有用的。

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2020年11月5日
1。背景
2。有用的属性
3所示。示例1:使用两个Colormaps在一个轴
4所示。示例2:使用不同Colormap在两个单独的轴
5。示例3:使用三个Colormaps在一个轴
6。示例4:使用多个Colormaps在一个单一的数字
7所示。示例5:覆盖多个轴不同Colormaps在一个数字
背景
每个图都有自己的colormap,存储在colormap财产。视图,您可以使用命令:
ColorMap =得到(gcf,“Colormap”)
所有孩子的对象图引用父图的colormap如果他们需要访问。如果你想要两个或两个以上的不同的对象使用不同的颜色,但是,它是可能的构造一个包含几个较小的colormaps colormap串接在一起,迫使每个对象使用不同的部分更大的colormap对应小colormap。例如,您可以建立一个由酷和灰色的colormap colormaps通过以下几点:
提出=[酷(32);灰色(32)];
前32行提出从酷colormap,最后从灰色colormap 32行。
有用的属性
三个属性用来确定颜色用于对象的范围是CData,爬,CDataMapping。他们定义如下,或者您可以参考处理图形在线文档更多深入的信息:
* CData: CData属性包含一个矩阵,定义了颜色在每一点ZData (YData二维补丁)。默认情况下,补丁和表面对象规模向colormap CData。CData的最小值映射到第一行colormap,最大值是colormap映射到最后一行。剩下的元素被映射成正比行colormap使用以下方程:
m =大小(colormap, 1);%的数量在当前颜色
% colormap
CData =得到(H,CData的)% H是一个表面或处理
%补丁对象
cmin = min (CData (:));%最小颜色值
cmax = max (CData (:));%最大颜色值
idx = min (m,圆((m - 1) * (CData-cmin) / (cmax-cmin)) + 1);
idx包含整数的值的范围从1到colormap的长度。值的实际行数字的颜色用于曲面图。
CData的图像中的对象定义行colormap用于颜色对应的像素(或本)。如果逻辑CData,比0的值对应于第一行,和值1到第二行。在这种情况下使用多个colormaps CData应该转化为直接索引;这是在例2。
* CDataMapping:补丁和表面的CDataMapping属性对象确定对象规模向colormap CData(这是默认行为)或CData是否直接索引colormap和不应该了。
*这一:这是轴的属性对象。这是一个双元素向量定义的颜色范围。通常,这一属性包含CData的最小和最大值。你可以使用caxis命令改变轴这一属性。
通过操纵这些三个属性,你可以迫使colormap的不同的对象使用不同的部分。首先,规模CData单个对象的属性,以便他们不重叠的,连续的和相同的范围值。如果CData值做重叠,那么情节将分享一些相同的颜色。定标后,设置这一属性,它包含的最小值和最大值的CData矩阵。下面的例子说明了如何使用多个colormaps单轴和多轴。
示例1:使用两个Colormaps在一个轴
%定义一个colormap使用colormap和降温
%的灰色colormap并分配图的colormap。
colormap([酷(64);灰色(64)))
%表面生成一些数据。
[X, Y, Z] =山峰(30);
%产生两个表面情节。
h(1) =冲浪(X, Y, Z);
持有
h (2) = pcolor (X, Y, Z);
持有
% pcolor Z = -10。
% 0 * Z是在下面的语句来确保大小
%的ZData不会改变。
集(h (2),“ZData”,-10 + 0 * Z)
集(h (2),“FaceColor”,的插值函数,“EdgeColor”,的插值函数)
视图(3)
%规模CData(颜色数据)的每一个情节,这样
%的阴谋连续,不重叠的值。范围
%的CData应该一律平等。这里的cdata映射
%整数值,这样他们更容易管理;
%,这不是必要的。
%最初,cdata都等于Z。
m = 64;每个colormap % 64 -元素
cmin = min (Z (:));
cmax = max (Z (:));
% CData的表面
C1 = min (m,圆((m - 1) * (Z-cmin) / (cmax-cmin)) + 1);
%的CData pcolor
C2 = 64 + C1;
%更新每个对象的cdata。
集(h (1),CData的、C1);
集(h (2),CData的C2);
%改变坐标轴的这一特性使它能跨越
% cdata的对象。
caxis ([min (C1 (:)) max (C2 (:))))
在这个例子中,每个对象的CData属性被映射到整数值。表面CData, C1,范围从1到64。64年被选中,是因为它使用第一个colormap 64行。自从pcolor情节colormap下半年使用,只需添加64 C1和新CData矩阵,C2,范围从65到128。如您所见,C1和C2具有相同的范围内,64年。他们是连续的,不重叠。
示例2:使用不同Colormap在两个单独的轴
如果您正在使用MATLAB R2014b或更高版本中,函数接受“colormap”句柄轴作为输入,并允许您设置不同colormaps为每个轴。例如下面的代码片段将情节与不同的colormaps两个次要情节。
ax₁=次要情节(2,1,1);
冲浪(峰值)
colormap (ax₁,春天)
ax2 =次要情节(2,1,2);
冲浪(峰值)
colormap (ax2,冬天)
如果您使用的是MATLAB R2014a早些时候,下面的示例向您展示如何得到不同colormaps两个单独的轴。
%加载一些图像数据。
负载小丑
%定义一个colormap,包含两个单独的colormaps。
%的对象在左轴将使用的前半部分
% colormap,对象在正确的轴将使用
%下半年。
cmap1 =地图;
cmap2 =灰色(大小(图1));
提出= [cmap1; cmap2];
colormap城市规划机构(cmap)
%第一图像生成。
次要情节(121)
图像(X)
%生成第二个图像。在这个轴,图像数据
%比例从1 + <开始其他的最大值
% >形象。这相当于设置CData
为每个图像,以便他们有连续的%,不重叠的
%值。
次要情节(122)
X2 = X +马克斯(X (:));
图像(X2)
注意,如果表面或补丁的阴谋被用来代替图片,您还必须设置每个轴的这一性质[min (X (:)) max (X2 (:)))。下面的代码片段说明了如何使用SET函数而不是CAXIS:
ax = findobj (gcf“类型”,“轴”);
集(ax,“爬”,(最小(X(:))最大(X2 (:))))
注意,我们可以同时两轴设置这一属性集;CAXIS只会影响一个轴。
如果CData逻辑,应该转换为直接索引为了使用超过colormap的前两行。例如,上述过程后,但在一个二进制图像:
负载小丑;
%创建逻辑CData
X = X >意味着(X (:));
次要情节(121)
h(1) =图像(X);
次要情节(122)
h(2) =图像(X);
cmap1 =夏天(2);
cmap2 =铜(2);
提出= [cmap1; cmap2];
colormap城市规划机构(cmap)
h % CData(1)和h(2),应该转换逻辑
%索引直接索引,以便利用超过2颜色
% " 1 "的类型是双在默认情况下,所以添加逻辑CData的原因
%结果转换为双由于类优先
h1CData =得到(h (1),CData的);
%这从逻辑转换为直接索引
h1CData = h1CData + 1;
集(h (1),CData的,h1CData);
h2CData =得到(h (2),CData的);
%首先从逻辑转换为直接索引
%转换从逻辑也可以直接使用双完成:
h2CData =双(h2CData);
%转换为直接索引从1开始,而不是0
h2CData = h2CData + 1;
%然后将不同colormap比第一图像的一部分
h2CData = h2CData + max (h1CData (:));
集(h (2),CData的,h2CData);
示例3:使用三个Colormaps在一个轴
%创建一些极地数据。
θ= linspace(0, 2 *π,40);
ρ= (5:.5:10)';
(ρ,θ)= meshgrid(ρ,θ);
%将极坐标映射到笛卡尔坐标系。
(X, Y) = pol2cart(θ,ρ);
Z = (sin (X) / X) + 0。*罪(3 * Y);
%生成一个黑色金属丝网阴谋。
嗯=网(X, Y, Z);
集(嗯,“FaceColor”,“没有”,“EdgeColor”,“k”)
持有
ax =轴;
轴(ax)
%项目数据不同的飞机。
h(1) =冲浪(X, Y, ax (5) + 0 * Z, Z);% x - y平面投影
h(2) =冲浪(X, ax (4) + 0 * Y, Z);% x z平面上的投影
h(3) =冲浪(ax (2) + 0 * X, Y, Z);% - z平面上的投影
集(h,“FaceColor”,的插值函数,“EdgeColor”,的插值函数)
%建立一个由三个独立的colormap
% colormaps。
cmapX =骨(32);
cmapY =酷(32);
cmapZ =喷气(32);
提出= [cmapX; cmapY cmapZ];
colormap城市规划机构(cmap)
%每个曲面图的CData映射到一个连续的,
%不重叠的数据集。每个CData必须有
%的范围内。
zmin = min (Z (:));
zmax = max (Z (:));
% CDX范围从1到32。
cdx = min(32轮(31 * (Z-zmin) / (zmax-zmin)) + 1);
% CDY 33 - 64不等。
cdy = cdx + 32;
% CDZ范围从65年到96年。
cdz = cdy + 32;
%更新cdata。
集(h (1),CData的cdx)
集(h (3),CData的cdy)
集(h (2),CData的cdz)
这一变化百分比(颜色限制),横跨所有的cdata
caxis ([min (cdx (:)) max (cdz (:))))
这个例子几乎以相同的方式运行示例1。然而,而不是colormap划分成两块分区colormap分成三个部分。
示例4:使用多个Colormaps在一个单一的数字
如果你有图像处理工具箱,您可以使用子图象与次要情节来创建数据与多个图像,即使图像colormaps不同。子图象的作品转换为显示真彩图像的目的,从而避免colormap冲突。
可以找到更多这方面的信息的多个图像显示部分的文档图像处理工具箱,特别是子图象的文档:
//www.tianjin-qmedu.com/help/images/ref/subimage.html
示例5:覆盖多个轴不同Colormaps在一个数字
这个例子展示了如何叠加图,并将它们链接两个轴。一个轴包含contourm块山峰函数。另一个轴包含pcolor山峰的二阶导函数的阴谋。
由于没有在等高线CData地产,我们不能手动分配它的一部分colormap轴像示例1。整个colormap等高线自动使用的轴。相反,我们可以给等高线图和pcolor阴谋每个自己的轴(colormaps不同),然后叠加。
创建第一个轴,设置一个灰色colormap,充满了pcolor情节。然后创建第二轴,将无形的酷colormap,然后充满contourm阴谋。每个轴的两边也都有自己的colorbar图与正确的价值观。最后,两个轴相连,这样他们总是模仿彼此的界限。没有这个,平移和缩放只会影响最后创建轴上休息。
%创建数据
[X, Y, Z] =山峰(30);
Zprime = del2 (Z);
contourmin = min (Z (:));
contourmax = max (Z (:));
pcolormin = min (Zprime (:));
pcolormax = max (Zprime (:));
%创建图和存储处理
高频=图;
%为pcolor创建轴和存储处理
hAxesP =轴;
%设置colormap pcolor轴
colormap (hAxesP、灰色);
%的阴谋pcolor梯度
pcolorPlot = pcolor (X, Y, Zprime);
集(pcolorPlot,“FaceColor”,的插值函数,“EdgeColor”,的插值函数);
%创建颜色条并设置范围的颜色
海关与边境保护局= colorbar (hAxesP,“位置”,“西方”);
caxis (hAxesP [pcolormin pcolormax]);
%为countourm创建轴轴
hAxesCM =轴;
%为轴设置可见“了”所以看起来透明
轴(hAxesCM“关闭”)
%设置colormap contourm轴
colormap (hAxesCM,酷);
%绘制contourm
contourmPlot = contourm (X, Y, Z, 20);
%创建颜色条并设置范围的颜色
cbCM = colorbar (hAxesCM,“位置”,“东”);
caxis (hAxesCM [contourmin contourmax]);
%连接两个覆盖轴所以他们比赛随时保持准确
linkaxes ([hAxesP hAxesCM]);

更多的答案(0)

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!