bar3
関数を使用する場合、バーの色はデータが含まれる列または行によって異なります。例:
data = peaks(20);
bar3(data);
view(-135,30)
各バーの色がそのバーの高さ(zdata)のみに依存するようにするにはどうすればよいですか?
すべてのバーはパッチで構成されているため、バーの色をいじるのは非常に困難です。パッチの頂点のzdataを変更する必要があります。これはあまり単純ではないので、この目的のためだけに関数を作成しました:bar3c
例:
data = peaks(20);
bar3c(data);
view(-135,30)
他の色を使用したい場合は、カラーマップを変更するだけです。
最小値と最大値の間のグラデーションを取得するのではなく、範囲全体を設定して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);
または、外部関数なしで実行したい場合は、
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の功績。