使用bar3
函数时,条形的颜色取决于数据所在的列或行。示例:
data = peaks(20);
bar3(data);
view(-135,30)
如何使每个条的颜色仅取决于该条的高度(zdata)?
很难弄乱条的颜色,因为所有的条都是用补丁构建的。您必须更改补丁顶点的 zdata;因为这不是很简单,我为此目的制作了一个函数:bar3c
例子:
data = peaks(20);
bar3c(data);
view(-135,30)
如果您想使用其他颜色,只需更改colormap即可。
如果您想设置整个范围以获得相同的颜色,而不是在最小/最大值之间获得渐变,则必须将调用更改为makecdata
. 现在它使用zdata
来指定其颜色,您可以轻松更改它以赋予范围特定颜色。
实际上,我只是这样做了,结果可以在这里找到。
例子:
data = peaks(20);
bar3crange([-8 0 3 4 8], data);
% colormap: red/yellow/green/blue
colormap([1 0 0;1 1 0;0 1 0;0 0 1]);
view(-135,30);
或者,如果您想在没有外部功能的情况下执行此操作,请尝试
data = peaks(20);
h = bar3(data);
view(-135,30);
for i = 1:size(data,2)
cdata = get(h(i),'cdata');
k = 1;
for j = 0:6:(6*size(data,1)-6)
cdata(j+1:j+6,:) = data(k,i);
k = k+1;
end
set(h(i),'cdata',cdata);
end
colormap(jet);
感谢aiZac的 Sebastian 获得灵感。