我在使用bar
和色彩映射时遇到问题。
我有一个这样的csv文件,其中包含六个任务的完成时间:
34,22,103,22,171,26
24,20,41,28,78,28
37,19,60,23,141,24
...
我创建了带有平均值的条形图,并添加了std变异误差栏。
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)));
为什么输出会这样?为什么酒吧颜色相同?我如何把传说放到六个柱子上?
答案 0 :(得分:0)
请参阅MATLAB文档中的Coloring 2-D Bars According to Height。只使用色彩图的第一种颜色为面部着色,你需要一些黑客(根据该文档页面上的代码)来做你想要的。
答案 1 :(得分:0)
一段能够发挥魔力的代码。它不使用@ am304提到的规范技术,因为你很难用它设置图例。在这里,对于6个输入值中的每一个,我们绘制完整的6个柱:一个条带有值,其余五个条带设置为零。
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) ]);