MATLABで項目ごとに色が違う棒グラフの作成コードについてご紹介します。
実際のコードも掲載しているのですぐに汎用可能です。
むらしんネットで探しても見つからず、自作できたので記事にしてみました。
色のついた棒グラフの作成
コードの例
%データ
sample(1,:)=randperm(10,5);
sample(2,:)=randperm(10,5)+10;
sample(3,:)=randperm(10,5)+20;
sample(4,:)=randperm(10,5)+30;
%棒グラフ作成
figure();
x=[];y=[];
x=categorical({'x1','x2','x3','x4'});
x=reordercats(x,{'x1','x2','x3','x4'});
y=[mean(sample(1,:)) mean(sample(2,:)) mean(sample(3,:)) mean(sample(4,:))];
bar_graph=bar(x,y);
%色分け
color=["r","b","y","g"];
hold on
bar(x, [y(1) NaN NaN NaN], 'FaceColor',color(:,1));
bar(x, [NaN y(2) NaN NaN], 'FaceColor',color(:,2));
bar(x, [NaN NaN y(3) NaN], 'FaceColor',color(:,3));
bar(x, [NaN NaN NaN y(4)], 'FaceColor',color(:,4));
hold on
%標準偏差
error=[std(sample(1,:),1) std(sample(2,:),1) std(sample(3,:),1) std(sample(4,:),1)];
er = errorbar(x,y,error,error);
er.Color = [0 0 0];
er.LineStyle = 'none';
hold off
%軸などの設定
fp = {'FontName', 'Arial','FontWeight','bold'} ;
ylim([0 60])
ylabel('y', fp{:}, 'fontsize', 18)
ax = gca;
ax.XAxis(1).Color = [0 0 0];
set(gca,'FontWeight','bold');
set(gca,'FontSize',12);
set(gca,'linewidth',1.5);
set(gca,'FontName', 'Arial');
set(gca,'FontAngle', 'normal');
title('Bar',fp{:},'fontsize', 20)
%画像として保存
cd figure
saveas(gcf,'bar','png')
cd ..
ざっくりと本コードの手順は次の通りです。
- 乱数で4×5のデータを作成
- 各グループの5つのデータの平均値から棒グラフを作成
- 各グループごとに色をつける
- 標準偏差や軸の設定
- 画像として保存
①,②,④,⑤についてはMatlab公式ページでも説明をしているので割愛します。
項目ごとに色が違う棒グラフの作成に重要なのが③です。
この部分で何を行なっているか簡単に説明していきます。
color=["r","b","y","g"];
hold on
bar(x, [y(1) NaN NaN NaN], 'FaceColor',color(:,1)); %x1
bar(x, [NaN y(2) NaN NaN], 'FaceColor',color(:,2)); %x2
bar(x, [NaN NaN y(3) NaN], 'FaceColor',color(:,3)); %x3
bar(x, [NaN NaN NaN y(4)], 'FaceColor',color(:,4)); %x4
hold onまず、colorの配列に各データに使いたい色の配列を作成します。
続いて各yの値に対してFaceColorを指定していきます。
指定するyの位置は [y(1) NaN NaN NaN] と記述して指定します。
色の配列を作成せずに、[‘FaceColor’,’r’]などとしても大丈夫です。
難しいことは1つもなく、これだけで色が指定できます。



簡単なコードだけどネット上で見つからなかった…
出力結果


上の図が、上記コードの実行結果です。
理想通り、各データが異なる色を持つ棒グラフを作成することができました。
今回は乱数を使用してグラフ作成を行いました。
実際に使用する際には、sampleの部分に自分のデータを当てはめてみてください。
なお、使用する際は自己責任でお願いします。
さいごに
以上がMATLABで項目ごとに色が違う棒グラフの作成方法です。
自分なりに作成したコードなので間違いを含んでいる可能性があります。
間違いの指摘やコメントがありましたら本記事のコメント欄にお願いします。
最後までお読みいただきありがとうございました。
