7

棒グラフの個々のバーをさまざまな色で陰影付けしようとしています。たとえば、正の場合は青、負の場合は赤です。インターネット上で機能するものを見つけることができません。以下の私のコードでは、すべてのバーが、バーごとに別々の色ではなく、最初のバーの値に従って色付けされていることがわかります。

c1=zeros(32,3);
c2=zeros(32,3);
for i=1:3
    c1(:,i) = linspace(r(i),w(i),32);
    c2(:,i) = linspace(w(i),b(i),32);
end
c= [c1(1:end-1,:);c2];
subplot(2,2,2)

bar(Numbers(end-7:end,1)), shading interp
caxis([-8 8]), colormap(c), colorbar

ご協力いただきありがとうございます

4

2 に答える 2

5

bar オブジェクトのプロパティを-1/0/1with signに変更してから、赤/青のバイナリ カラーマップを使用できます。

y=rand(10,1)*3-1.5; % some data

hb=bar(y);
set(get(hb,'children'),'cdata', sign(y) );
colormap([1 0 0; 0 0 1]); % red & blue in rgb

バイナリ カラーの棒グラフ

ここでさらに詳しい情報を見つけることができます。

編集: シェーディングするには、 caxiscdataと組み合わせて適切に設定する必要があります:

y=rand(10,1)*3-1.5; % some data
hb=bar(y);

% the colormap
Mc = 16;
Nc = Mc*2+1; % number of colors, uneven so there is a neutral middle
rgb = [1 0 0;0 0 1];
cmap = [linspace(rgb(1,1),rgb(2,1),Nc)' linspace(rgb(1,2),rgb(2,2),Nc)' linspace(rgb(1,3),rgb(2,3),Nc)' ];
colormap(cmap);

% cdata
c = y;
set(get(hb,'children'),'cdata', c);
cmax = max(abs(c));
caxis([-cmax cmax]);

影付きの棒グラフ

于 2012-11-07T12:08:08.600 に答える
1
figure
hold on
bar(1, 1, 'red')
bar(2, -1, 'blue')
于 2012-11-07T09:17:24.247 に答える