我有一个条形图,其中有2个Y轴用plotyy()
生成,并希望为每个轴分配一个颜色图。我厌倦了使用colormap(axis,map)
,但它似乎覆盖了整个情节的设置,而不是仅覆盖axis
的情节。
我的方法:
[haxes,hbar1,hbar2]=plotyy(1:2,randi(2000,2,3),3:5,randi(100,3,3),'bar','bar');
set(haxes(1), 'xtickLabel', name(1:2));
set(haxes(2), 'xtickLabel', name(3:5) );
set(haxes,{'ycolor'},{'r';[67,186,52]./256});
%set(hbar1, 'facecolor', ['r','w','y']); %<- Things like this work, but are not what Iwant
colormap(haxes(1),hot)
colormap(haxes(2),summer)
导致这个情节
我想要这样的东西(我用手生成,着色单条)
如何在一个图中应用两种不同的色彩映射?
答案 0 :(得分:1)
将要使用的所有色彩映射连接到单个色彩映射,然后将每个bareries对象设置为直接索引到此色彩映射的相关bin中。 E.g。
[haxes,hbar1,hbar2]=plotyy(1:2,randi(2000,2,3),3:5,randi(100,3,3),'bar','bar');
colormap(haxes(1),[hot(3); summer(3)])
for a = 1:3
set(get(hbar1(a), 'Children'), 'CData', [a; a], 'CDataMapping', 'direct');
set(get(hbar2(a), 'Children'), 'CData', [a; a; a]+3, 'CDataMapping', 'direct');
end
产生
答案 1 :(得分:0)
这正是你想要的,
y = [4.2; 4.6; 5];
h = figure;
a = axes('parent', h);
hold(a, 'on')
colors = {'r', 'b', 'g'};
for i = 1:numel(y)
bar(i, y(i), 'parent', a, 'facecolor', colors{i});
end
答案 2 :(得分:0)
色彩映射适用于整个图形,而不仅仅是轴,因此当您第二次设置色彩映射时,只需覆盖第一个色彩映射。引用色彩图文档(我自己强调):
colormap(ax,...)
使用与ax轴相对应的数字而不是 目前的数字。