我已阅读其他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)
?
我真的需要帮助理解这一点。
我错过了什么或者这个功能是特殊情况吗?
答案 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