如何在Matlab中的bar3图中控制组的颜色

时间:2017-07-22 12:05:40

标签: matlab plot colors bar-chart matlab-figure

我在Matlab中做了一个3D条形图。我希望每组的颜色相同(例如s1 =蓝色,s2 =绿色,s3 =红色;请参见下图)

我使用了以下代码:

Z = data;
Y = [1 300  600];   % The positions of bars along the y axis
h = bar3(Y,Z',0.05);
[nGroup, nBar] = size(Z);
nColors  = size(get(gcf, 'colormap'), 1);
colorInd = randi(nColors, nBar, nGroup);
for i = 1:nGroup
    c     = get(h(i), 'CData');
    color = repelem(repmat(colorInd(:, i), 1, 4), 6, 1);
    set(h(i), 'CData', color);
end
set(gca, 'YTickLabel', 

有什么建议吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

不是通过y轴设置组,而是通过x轴设置它们,因此每个组都是一个图形对象,并且可以完全着色。 这是一种简单的方法:

Z = randi(7,11,3); % some data with three groups
bar3(Z,0.05); % Each column in Z is one graphic object
set(gca,'XTickLabel',{'s1' 's2' 's3'}); % set the lables of the groups
set(gca,'PlotBoxAspectRatioMode','auto') % make the view wider
set(gca,'YDir','normal') % reverse the y-axis  to match your example
colormap(lines(3)) % define 3 colors for coloring by group
view(55,22) % rotate the orintation to match your example

bar3

如果您想要问题中的颜色,可以将色彩映射替换为:

colormap(flipud(eye(3))) 

或输入:

h = bar3(Z,0.05); % instead of bar3(Z,0.05)
set(h,{'FaceColor'},{[0 0 1];[0 1 0];[1 0 0]})