7

使用bar3函数时,条形的颜色取决于数据所在的列或行。示例:

data = peaks(20);
bar3(data);
view(-135,30)

bar3 示例

如何使每个条的颜色仅取决于该条的高度(zdata)?

4

2 回答 2

15

很难弄乱条的颜色,因为所有的条都是用补丁构建的。您必须更改补丁顶点的 zdata;因为这不是很简单,我为此目的制作了一个函数:bar3c

例子:

data = peaks(20);
bar3c(data);
view(-135,30)

bar3c 示例

编辑

如果您想使用其他颜色,只需更改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);

bar3crange 示例

于 2012-10-10T22:31:02.940 回答
3

或者,如果您想在没有外部功能的情况下执行此操作,请尝试

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 获得灵感。

于 2015-02-12T01:00:13.403 回答