在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
6 z4 a$ `- B6 V* @实例:# z% ?7 [0 t! K" a! F
% 数据) A# {9 F, E8 A' d
volume_mean=[0.73,0.45;
; D* x2 @3 B/ z; ~ 0.42,0.43;
: j, ^8 `7 F' \ A/ K* u 0.70,0.42];
0 X5 o# w2 @0 I" ^* rvolume_std=[0.65,0.17;
1 S( z% O, v9 J3 K4 }- w4 g7 P6 _ 0.35,0.14;
- d: Q4 ]; T: E& G1 U7 } 0.44,0.13];1 `/ w/ T& O0 i; [& o& a; w% i
%绘图 4 }9 E" T4 o- z
close all;figure;
+ O0 \) B4 ?- t6 C- g; C% @h=bar(volume_mean);
& G) \5 I. R0 y- ~set(h,'BarWidth',0.9); % 柱状图的粗细" P; k2 K' [. g1 g2 m
hold on;
I' H" D9 S p! Fset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色9 A9 S* `! J. T! m0 w* N
set(h(2),'facecolor','k') % 第二列数据视图颜色
5 _& ~8 A: b: l" `8 q5 [
) D4 K( X. ~! k% s, F& x$ h2 Q u* M2 W
ngroups = size(volume_mean,1);
8 V! }* U. G" `2 y/ Anbars = size(volume_mean,2);
$ n0 w: P5 H' q" J) U4 ngroupwidth =min(0.8, nbars/(nbars+1.5));
4 h1 \2 r# L7 ]3 J/ |' [5 h( T. i2 `& ]6 U
d( l# B* Q* [2 c) r2 S8 c: P
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap+ M$ N" i8 L3 S* R; ~
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red/ N% h5 i7 `5 }3 t! l! g. N$ i8 R
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];
1 P t/ W* o% j: O) r# F: M7 _hold on;
( I+ K: j+ T; n- Mfor i = 1:nbars
9 E$ C' E+ T# k9 N% x x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);0 v# F2 n- x$ ^5 f
errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);
8 g$ A- p0 g0 `: g3 {# iend
: e# |( m5 ]1 n B0 V' Q* ^
1 D8 N1 ^0 `. N. t* ?6 X
; h" a; p+ }4 @& r; x! j: Fset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
6 ~/ n7 Q+ z& e" S ~/ Wylim([0 1.5])
) | R; i0 H8 k2 S1 a) ?set(gca,'ytick',0:0.5:1.5)% i- ^- Q8 `: z5 x$ P
xylabel(gca,' ','Volume[Sv]')
6 t0 Z/ Y; C) L8 P! X" Dlegend('data1','data2','location','NorthEast') ?# o! S# Z& R# s+ e, o3 x5 i
, i0 ?: h. ]( }. s4 M% c- e/ ]$ U6 A& N" |7 o6 T: y
以上实例可以参考使用。
/ A9 J/ s/ t/ l; I6 q6 K3 z% J+ r) `0 R& n- k/ ~4 t
2 J" H8 a) V* F+ n* u# Y8 b- r: J0 Derrorbar的局部调整:/ c5 a) M* {3 L# ]+ T+ _) _3 A+ z
1.头部宽度调整
$ m$ H; u* a* G' _' a% Create errorbar
2 h. _4 `6 y/ [X = 0:pi/10:pi;
/ |5 M+ g' l4 }, C- G! p* r* \Y = sin(X) + 1;: Y _$ [6 b. ]: n' @
E = std(Y) * ones(size(X));" k5 d- W. u+ u
ha = errorbar(X, Y, E);
! C' m- M8 m0 p4 W* V& L% Width of the top and bottom lines of errorbar
/ }0 g6 H3 G% `. z( ^/ qxlength = 0.2;' ]1 e+ K' W1 L
% Make horizontal lines with 'line'
4 }( J s+ S7 Lfor k = 1:length(X)) s5 _+ o8 v, z2 w% q' l
x = [X(k) - xlength, X(k) + xlength];( A+ e: r# u. v7 o7 R% @
y_h = [Y(k) + E(k), Y(k) + E(k)];
1 Y/ h. t+ ^3 v3 D+ M3 j7 b line(x, y_h);
3 W6 X5 c. c. g y_b = [Y(k) - E(k), Y(k) - E(k)];
. l1 G# h3 i. U! e( G; @9 ]9 \; M/ x* B2 y line(x, y_b);4 J3 O& X* m1 u4 y1 G
end
2 I. O+ |( c7 F& j; z! N8 ]参考:www.52ocean.cn
" D" K ?: c+ q) H- L4 z7 I$ s+ M# S v8 p2 u8 A
6 U; Z' Q, j' x* ]! E r
4 Y2 z$ ~& E6 I; A6 g, W! O* R* X' E: T6 K( P
转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |