首先说说colormap.
它提供了一种着色方案,我认为它有3个作用:
1)Matlab内置多种样式的color map, 在任一个Figure中,打开菜单"Edit-->ColorMap..",弹出"Colormap Editor" 界面。在该界面上打开"Tools-->Standard Colormps", 你就能看到了。Colormaps用一个index值来代表颜色,与RGB方式标志颜色相比,可以大大节省空间。
2)方便的提供渐变色,我们只要指定一个colormap中首尾色,它就能按照该colormap,为我们填充中间区域的颜色。
3)我们可以灵活的给图像换颜色,因为用的是index,对于不同的colormap来说,颜色是不一样的。
再来说说FaceVertexCData.
这个东西是来指定vertex上的颜色的。
比如下面一段代码:
% data =
% 17.2820 26.6375
% 84.0000 81.6667
% 100.0000 101.0000
mybar = bar(data);
ch = get(mybar,'Children');
fvd = get(ch{1},'Faces');
fvcd = get(ch{1},'FaceVertexCData');
fvd2 = get(ch{2},'Faces');
fvcd2 = get(ch{2},'FaceVertexCData');
画出来的直方图效果如下:
ch显示的是:
ch =
[175.0568]
[178.0564]
,是因为有两个对比组。
fvd =
2 3 4 5
7 8 9 10
12 13 14 15
有3行,是因为每个组有3个方图,每个方图要有4个点。我们从fvd可以看到,点的最大编号是15,其实说明,这三个方图共用16个点,但真正起作用的应该是fvd中列出的点。
但其他几个点的作用是什么,我们不得而知。再验证一个是否是16个点,看下面:
length(fvcd)
ans =
16
fvcd是16X1的矩阵,每行代表一个点,里面的数据代表color的index. 其有16行,说明的确用了16个点。
如果我们要设定方图颜色,就可以设定 FaceVertexCData,比如:
set(ch{1},'FaceVertexCData',[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1]);
需要注意,后面FaceVertexCData的值的格式要设定正确,在这里要指定16个点,每个点的color index是1.
ch = get(mybar,'Children');执行的结果是返回ch{0},ch{1}, 就是因为有2个对比组。分别对ch{0}和ch{1}设定不同的FaceVertexCData,就可以把对比组用颜色区分。
参考文献:
1. http://www.mathworks.cn/cn/help/matlab/creating_plots/bar-and-area-graphs.html
2. http://www.phys.ohiou.edu/computer/matlab/techdoc/ref/patch.html