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の例

編集

他の色を使用したい場合は、カラーマップを変更するだけです。
最小値と最大値の間のグラデーションを取得するのではなく、範囲全体を設定して1つの同じ色を取得する場合は、呼び出しをに変更する必要があります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 に答える