使用bar的多个colormaps(z,'stacked')

时间:2014-02-19 18:02:32

标签: matlab

我已阅读其他colormap主题http://www.mathworks.com/matlabcentral/answers/101346上的帖子推荐的文章,我理解这个概念。使用CDATA函数时,我无法理解bar(z,'stacked')的值。

我有一个使用cmap绘制长轴的图形,我已经为条形图创建并定位了一个新轴,我希望它使用cmap2

例如,我的代码包括:

maps = colormap([cmap;cmap2]);
bH = bar(z,'stacked');  

z = 25x10(25个站点的10年年度数据)

现在,当我查看CDATA

get(bH,'CDATA')返回大小为1x10的单元格数组,每个单元格包含字符串'scaled'。

现在,如果我查看每个孩子的CDATA

childH = get(bH,'children');
get(childH{i},'CDATA')

返回大小为25x10的矩阵,每个值都相等。

e.g。 childH{i}的{​​{1}}是一个大小为25x10的矩阵,其值为CDATA

那么我该如何缩放它们以映射到我的= i 从上面的文档我需要执行:

colormap

m = size(colormap,1); % Number of colors in the current colormap Data = get(H,'CData') % Where H is a handle to a surface or patch object cmin = min(CData(:)); % Minimum color value cmax = max(CData(:)); % Maximum color value idx = min(m,round((m-1)*(CData-cmin)/(cmax-cmin))+1); 变为idx,始终为min(m,nan)

我真的需要帮助理解这一点。

我错过了什么或者这个功能是特殊情况吗?

1 个答案:

答案 0 :(得分:0)

首先确保cmap2具有您想要使用的颜色数,然后让bareries对象直接映射到它。类似的东西:

childH = get(bH, 'children');
for a = 1:numel(childH)
   C = get(childH{a}, 'FaceVertexCData');
   C(:) = a+size(cmap, 1);
   set(childH{a}, 'FaceVertexCData', C, 'CDataMapping', 'direct');
end