多组柱状图绘制
合理调整矩阵形态直接使用bar命令可以得到
如 size(y)=5*2 则bar(y) 得到5组每组2条的柱状图
添加误差棒可使用errorbar命令
y=squeeze(America); % 5*2
error=squeeze(error_America); % 5*2
b=bar(y,'FaceColor','flat','BarWidth',1.2); % 绘制5组2条柱状图
% 获得组数、柱数、柱宽等信息
ngroups = size(y,1);
nbars = size(y,2);
groupwidth =min(0.8, nbars/(nbars+1.5));
hold on;
for i = 1:nbars; %针对第一/第二柱子
x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars); %找到每组第一/第二个柱子在各组绘制的位置
for j = 1:ngroups; %针对每一组
errorbar(x(j),y(j,i),error(j,i),'color','k','linewidth',1); %绘制双头error
% errorbar(x(j),y(j,i),0,error(j,i),'color','k','linewidth',1); %绘单头error——朝上
% errorbar(x(j),y(j,i),error(j,i),0,'color','k','linewidth',1); %绘单头error——朝下
% 需要时可以采取if判别y的正负,分开绘制朝上或朝下的errorbar
hold on;
end
end
以上为正常标准差errorbar绘制,如考虑合理范围内的最大最小值同样可以采取errorbar命令
使用的是errorbar(x,y,neg,pos)这一命令,即在每个数据点处绘制一个垂直误差条,其中 neg 确定数据点下方的长度,pos 确定数据点上方的长度。
min_y=y-miny;
max_y=maxy-y;
for i = 1:nbars; %针对第一/第二柱子
x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars); %找到每组第一/第二个柱子在各组绘制的位置
for j = 1:ngroups; %针对每一组
errorbar(x(j), y(j,i),min_y(j,i), max_y(j,i), 'color','k','linewidth',1); %讲最大最小值画成errorbar形式
hold on;
end
end