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

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

[复制链接]
在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
8 q) I9 P3 L2 i! G: C实例:, U$ c& b* A1 J) T5 z  K: ?8 @
% 数据; X1 i' R7 D) X4 u% R6 o
volume_mean=[0.73,0.45;( M2 d3 V! T) f  v% j
                        0.42,0.43;/ @' [7 Q/ `$ m! ~3 R3 x) L
                        0.70,0.42];                        
) j* |$ _* L( y2 z+ C  E, Mvolume_std=[0.65,0.17;
  k9 {  w% F1 ~2 t3 J7 n% h                     0.35,0.14;
/ R) _- T: q5 Q2 q                     0.44,0.13];
0 t3 B/ u& J7 X9 X- O% B%绘图                     / N# R8 D% t1 i& n5 Q
close all;figure;/ ]2 @* ?: r5 e2 d+ c) T
h=bar(volume_mean);" ^6 V$ x, R! }# U  S% k3 G- r
set(h,'BarWidth',0.9);        % 柱状图的粗细1 n- p- G* {% ~3 u! }: \- T; x5 a. ]
hold on;+ |- Y: s$ G+ i; \% T* S9 ]# e
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
0 a9 p) \+ T+ }1 Fset(h(2),'facecolor','k')        % 第二列数据视图颜色- \- r& d! x$ n- h

3 J5 ]+ K3 F+ L6 n+ |; I
& N! s% s7 q% T1 xngroups = size(volume_mean,1);
/ m3 [! ]& C/ Y+ `nbars = size(volume_mean,2);4 m, Q9 ^) P& y- H
groupwidth =min(0.8, nbars/(nbars+1.5));
, N6 c+ A4 _; Q( t% p9 [! `% M8 ^" S6 a

5 ?4 }8 `. g# h% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap
4 z" M; ]& J$ |; n%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1]));   % blue / red( }2 m( T, p, ^  |* l
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];" l" s5 e( B) n
hold on;2 u7 {- i) `8 K* P4 t
for i = 1:nbars* H, G- }3 N7 O- Q% U# p# x
    x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);) S# y7 z% l( @3 n0 ~# n
    errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);. q! _3 g% n4 K' F7 D" {8 t( _- h
end
1 r" n9 X6 s) q" [) A* ?5 F+ e2 ?& v- g3 q' e" w

5 v$ a2 ~- Z& W$ ~6 M% c" hset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)$ R, K$ l8 f: d& t
ylim([0 1.5])
0 T: t% E. a" S- vset(gca,'ytick',0:0.5:1.5)
* ]! p$ j, h$ {xylabel(gca,' ','Volume[Sv]')
/ K2 a- b$ Z& C3 Z9 hlegend('data1','data2','location','NorthEast')( M5 E4 ~0 _4 ~

1 c$ t' C# I6 F6 Z% t. ~% u
/ B( @& u1 K/ [" F- l- e! w6 N' [, A以上实例可以参考使用。/ `2 R+ y# ]$ q1 V0 i; h
5 k) a) }6 x# ~
5 I/ z: o! B5 l! _; W* g6 {
errorbar的局部调整:) f/ B$ T  F! D3 y( A# x
1.头部宽度调整
9 M( C& u+ d7 V( l) _9 M6 F% Create errorbar
0 p$ D( E1 v+ @. }; n! h' V) G' hX = 0:pi/10:pi;
  ]. |! C6 r( ?3 s  F" H9 H6 j$ U8 sY = sin(X) + 1;: f- r* ]- T2 ~( l6 W" F# c7 W
E = std(Y) * ones(size(X));
( W5 s" u8 Z( ?* V1 s$ P* O/ Eha = errorbar(X, Y, E);
9 r" v8 @: q" X1 y8 Q% Width of the top and bottom lines of errorbar. w% R1 A( W; c3 R: ]5 t
xlength = 0.2;6 {6 W7 O# u+ }( n/ n
% Make horizontal lines with 'line'
% z& S$ ~1 x$ G+ ufor k = 1:length(X)
% _$ x- s; x, n0 u7 \ x = [X(k) - xlength, X(k) + xlength];  N; [( F1 Y% p/ ]# }
y_h = [Y(k) + E(k), Y(k) + E(k)];
. q5 x$ q5 m$ \, R( `1 H0 b line(x, y_h);( B& ]4 F* k& V: ], K/ b
y_b = [Y(k) - E(k), Y(k) - E(k)];
1 p$ c9 N4 n5 f5 z; [ line(x, y_b);2 I$ O' `: M# i" F& B
end
( P, m" {; ^$ ~5 K2 |; v参考:www.52ocean.cn * ?- g9 R# m+ I* D* F. j# _
6 {4 }; k; K8 N3 B

4 B/ }- }9 R$ ~. g2 u! r0 V                    ; `8 D7 I; F8 G" E9 ]( v

9 c1 Q4 d  B" y- W7 v# v* T                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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