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

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

[复制链接]
在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
! |; a; K& t# z实例:1 `  H$ a; R) G, ]3 d- Q
% 数据
* t% q5 W- @9 j6 Y3 Z9 n" ~volume_mean=[0.73,0.45;
& [& k# D: F, M                        0.42,0.43;
$ R% o: Y% B( ^1 |                        0.70,0.42];                        
  x0 Y1 I. f3 |" Xvolume_std=[0.65,0.17;* w% ^6 R/ E+ x5 }
                     0.35,0.14;
4 _( _/ K! M7 p6 e8 h% t                     0.44,0.13];1 N3 y2 A3 T, k9 K; l
%绘图                     
+ ?/ G# |9 [- wclose all;figure;& _: J* A) V' V3 m
h=bar(volume_mean);
' J. K! h- C. S$ J% g' r% A" ~/ Sset(h,'BarWidth',0.9);        % 柱状图的粗细1 r! u9 A9 C6 t5 s6 I
hold on;
. S* A* j0 Y: T4 vset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
/ L" C* w& j$ Dset(h(2),'facecolor','k')        % 第二列数据视图颜色
# V$ W7 f4 ~0 f) f1 @1 s( @+ X9 [3 d2 r% G

. N9 _5 j/ O. p; K+ l0 Ungroups = size(volume_mean,1);3 M+ W+ b8 o: u3 u
nbars = size(volume_mean,2);
) P' ]: ]6 k8 w4 ~& Bgroupwidth =min(0.8, nbars/(nbars+1.5));
+ Q2 g( U* Q0 x3 w# g) x  n! i: j1 c) g- X! Q1 Q# m: y
' J6 |1 L5 W* s$ }" @
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap0 B- A4 J9 u# L# c
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1]));   % blue / red
; i  e1 J5 V3 Q- z( \- p3 q% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];
8 M. p$ K0 b2 s3 l$ k( p+ @' o& ~hold on;
6 {* N  l7 @0 Xfor i = 1:nbars8 N- B+ J/ y/ U" ^1 K! v
    x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
) b" t' f+ S# @: G    errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);
/ c' x3 S+ _$ r  C) c$ X8 G& t" ^end$ K6 O* _, y: {: z4 g# O
6 r9 o+ J4 x$ M3 P9 P
- h" i+ @1 }4 U  V( p! T; \
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
7 c; I$ h. y2 T" X7 u. H/ W* C3 ~ylim([0 1.5])8 h) D6 e4 }, h8 P! f
set(gca,'ytick',0:0.5:1.5)) `% [' d% {5 i: h% [
xylabel(gca,' ','Volume[Sv]')" I' v- _+ Y% K( p( S
legend('data1','data2','location','NorthEast')
& G# ^' V- ]8 }! N0 m- T; p9 n; k: N# J9 i  p# V

! D# A- z6 w) i) ^* W' X  a以上实例可以参考使用。/ K* U7 B: z# G5 u( _) _

. u- j' u0 M9 G2 c. J" _( j" d6 ^5 z; l' c, ]: N; [) ^
errorbar的局部调整:2 d' d4 C( d* D  X: _. a; O
1.头部宽度调整! Y0 z4 q+ F/ b" D% _9 G
% Create errorbar7 T0 {1 ?  M9 F7 `
X = 0:pi/10:pi;6 q% _1 V8 C' `2 C" B1 o# K% i
Y = sin(X) + 1;% {$ G, j! \2 ~6 z5 F
E = std(Y) * ones(size(X));6 f# {7 q: R2 h2 j& {
ha = errorbar(X, Y, E);
0 Y7 L' s3 y3 y2 x( `" g: K2 R% Width of the top and bottom lines of errorbar4 x% |3 n# ^" t+ Z! }
xlength = 0.2;) g/ h  @0 a2 b" {  M2 r9 j2 k5 M  a
% Make horizontal lines with 'line') `  C( [" u4 ?# I3 O
for k = 1:length(X)
. T, H! j" u: q9 v x = [X(k) - xlength, X(k) + xlength];
* _. n. P" G, b' N% x y_h = [Y(k) + E(k), Y(k) + E(k)];
2 S, {, ], \3 y; }* B, v line(x, y_h);7 G! k: x6 n( ^
y_b = [Y(k) - E(k), Y(k) - E(k)];
4 }% [$ w- u5 G5 \9 b line(x, y_b);
* ^9 p( B. _, E3 \8 send
: c  E2 ]$ P# J0 Q5 G5 a参考:www.52ocean.cn
- R4 K1 Y& v% s8 ~, X, D2 p% q- m% r% h! J

( _6 m9 C0 R4 e: _                    
$ U$ b1 U3 {& p/ n6 n5 J0 H  L% x5 L4 X" A
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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