1

カラーマップの使用に問題がbarあります。

6 つのタスクの完了時間を含む次のような csv ファイルがあります。

34,22,103,22,171,26
24,20,41,28,78,28
37,19,60,23,141,24
...

平均の棒グラフを作成し、標準偏差エラーバーを追加します。

res = csvread('sorting_results.csv');
figure();
y = mean(res)';
e = std(res);
hold on;
bar(y);
errorbar(y,e,'.r');
title('Sorting completion time');
ylabel('Completion time (seconds)');
xlabel('Task No.');
hold off;
colormap(summer(size(y,2)));

なぜこのような出力になるのですか?棒の色が同じなのはなぜですか?また、凡例を 6 つの小節に配置するにはどうすればよいですか?

ここに画像の説明を入力

4

2 に答える 2

0

MATLAB ドキュメンテーションの高さに応じた 2 次元バーの色付けを参照してください。カラーマップの最初の色のみが顔の色付けに使用されます。必要なことを行うには、(そのドキュメント ページのコードに従って) ちょっとしたハックが必要です。

于 2013-07-23T16:08:53.517 に答える
0

魔法のようなコードです。凡例を設定するのに苦労するため、@ am304 が言及した標準的な手法は使用しません。ここでは、6 つの入力値のそれぞれについて、完全な 6 本のバーをプロットします。1 本のバーには値があり、残りの 5 本はゼロに設定されています。

x = rand(1,6);     %create data
x_diag = diag(x);  %zero matrix with diagonal filled with x
cmap = summer(6);  %define colors to use (summer colomap)

figure('color','w','Render','Zbuffer'); %create figure

%bar plot for each x value
for ind_data = 1:length(x)
    h_bar = bar( x_diag(ind_data, :)); %bar plot
    set( get(h_bar,'children'), 'FaceVertexCData', cmap(ind_data,:) ) ; %color
    hold on;
end
colormap('summer');

%legend-type info
hleg = legend( ('a':'f')' ); 
set(hleg, 'box', 'off');
%xticks info
set(gca, 'XTickLabel', ('a':'f')' );

%plot errors
e = ones(1,6) * 0.05;
errorbar(x, e,'.r');
set(gca, 'FontSize', 14, 'YLim', [ 0 (max(x) + max(e) + 0.1) ]);
于 2013-07-23T21:17:39.210 に答える