收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

【MATLAB】一组含几个bar的柱状图的绘制以及errorbar的添加

[复制链接]
在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。7 A: F% _' b' F# H: m, Y
实例:
! V* T$ D4 e. d, a- L% 数据9 f) J- {. L4 D- C
volume_mean=[0.73,0.45;
, O( Z7 T% f0 X6 f( e                        0.42,0.43;2 n' _. J. L8 _
                        0.70,0.42];                         7 R7 }  @- o; @( Q- e
volume_std=[0.65,0.17;( |- A5 C" Q. w7 U: ~
                     0.35,0.14;2 A! l! s3 v5 ~
                     0.44,0.13];1 o. N1 J- R3 ]6 r% V1 d
%绘图                     
3 h: }1 T! @3 U+ U0 S" |) Gclose all;figure;0 S8 r: N& g6 u$ S. T6 e2 J6 X1 q5 G
h=bar(volume_mean);. Q/ b; d4 O* @
set(h,'BarWidth',0.9);        % 柱状图的粗细% v& V$ U4 R0 E; v. e, y
hold on;
  @" a) ]6 ^6 \2 j+ l. @; C; A4 mset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色1 j% m# F4 |5 \2 @% q
set(h(2),'facecolor','k')        % 第二列数据视图颜色
2 Y/ G1 G4 \5 x+ n5 z$ h9 X5 _) M: q, a+ u; Y' t
0 m# C; P$ w: m- k2 U1 R; a4 G
ngroups = size(volume_mean,1);4 v; t4 D/ n! A
nbars = size(volume_mean,2);1 I, E  [5 _( V. A' x$ K
groupwidth =min(0.8, nbars/(nbars+1.5));
- C- g  Q+ X5 |" T9 ?4 q3 n, M4 c
9 a) w: x+ \5 ]$ }& u
( B( t* E- O1 M% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap% r( d8 _- r# Y
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1]));   % blue / red
  W: Z9 H5 m, v5 y& K! c% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];! J% d; }* B' s  D; e& n
hold on;- W- {1 \2 _5 W. b+ b2 Y' c
for i = 1:nbars
) p, K) V! k! @4 A6 S- z7 O6 A    x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);, }9 Q0 y5 g. a, q) O4 l0 T
    errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);
. D8 F' Q3 t+ x1 pend
3 B' n$ v( J* W- D& v( X" I. Q9 Y# `3 A7 J2 A: ]

) a& \: T+ `" E/ A( D& d( Qset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
' ^& V; |. u& r$ P( Y3 G2 |ylim([0 1.5])
" g: J7 r: s6 O$ Q9 I1 Wset(gca,'ytick',0:0.5:1.5)
8 O) j1 w9 S/ S1 u0 Sxylabel(gca,' ','Volume[Sv]')
% x0 m5 ~6 e% P/ k- E) G# t7 Ylegend('data1','data2','location','NorthEast')) A0 V2 M- [/ S7 a$ i
, Q/ [8 k6 w! Z# G3 \5 B( O

! d7 U) w( u% K- a% [1 ~以上实例可以参考使用。4 L0 ^9 h* N- ^8 [
: k  M' t% `# B2 I/ k

6 A- {/ d. F& s7 X4 lerrorbar的局部调整:4 q0 G7 y- [" e) l8 w" [
1.头部宽度调整1 Z; q* |- c* w4 C+ m" K4 L& y
% Create errorbar9 I6 o/ |/ q9 O$ A4 x" L
X = 0:pi/10:pi;  _; j1 D- W  j
Y = sin(X) + 1;
3 }1 p9 F( p# x6 g/ N8 pE = std(Y) * ones(size(X));5 @+ M1 W! ^8 t
ha = errorbar(X, Y, E);9 Q6 Y) x) h1 L8 h% F5 \" Z, V- _
% Width of the top and bottom lines of errorbar6 U9 y; W  Y3 x, f( v  A
xlength = 0.2;3 d, o4 r% a: _/ I' Z" j
% Make horizontal lines with 'line'$ R% Q( M( C/ r+ `( A& R# P
for k = 1:length(X)) D: ~$ e0 |1 [# E) x% S: K
x = [X(k) - xlength, X(k) + xlength];
' z4 C, r' G" |9 e y_h = [Y(k) + E(k), Y(k) + E(k)];
, D5 R, _" e( u line(x, y_h);
+ ~0 y) D) G0 g; Q" e y_b = [Y(k) - E(k), Y(k) - E(k)];
4 L+ E" s" M* t5 w line(x, y_b);2 ~2 [; b/ ]! _( t' ]7 r1 C
end
5 d9 t6 H2 F: G6 ?' V% d& y参考:www.52ocean.cn + g) |3 ^$ j5 S4 @* L9 p! _8 t

  v  h5 M2 \" P: X1 k: z. \
1 j2 S6 n/ i6 {3 Z6 ?1 Q                    
7 `9 E4 y! o1 s2 ~$ r4 c9 [: p% @  `7 |9 t8 N
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
黄金品质
活跃在2021-12-8
快速回复 返回顶部 返回列表