在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。3 ]1 b9 \$ P* K) h+ F
实例:
% f( \! E6 i; ]2 H. t) j5 f8 }6 V% 数据
9 Q! Y" {" E' Z& _volume_mean=[0.73,0.45;
! X$ L5 B1 D: n 0.42,0.43;
5 ~ y$ G5 x( J( L3 U 0.70,0.42];
' c# K5 Q" o$ }1 D* j6 N7 {5 Mvolume_std=[0.65,0.17;! _7 _ v3 V$ ?! f
0.35,0.14;
" Z w$ r3 L/ J! j 0.44,0.13];
( _/ I) e t/ s' ~9 M2 N%绘图
! g, @4 g8 B! U) D8 E2 Gclose all;figure;/ t( t' e* p& x0 ~$ s0 o/ @: Y
h=bar(volume_mean);: _. U* u b0 C( H0 g
set(h,'BarWidth',0.9); % 柱状图的粗细) ?, p, N: t/ }& Z
hold on;
3 L4 y5 S9 v, H) Lset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
& Y$ R' h Z# h `6 q+ ~6 jset(h(2),'facecolor','k') % 第二列数据视图颜色9 h& e! T+ D( X0 X
|, Y- N7 d9 |: J! m. Z
p, B$ t3 ]8 f" R3 k- S; x
ngroups = size(volume_mean,1);
( D+ `3 P! `7 Znbars = size(volume_mean,2);
7 L( G$ f% T% S! a# }! ?groupwidth =min(0.8, nbars/(nbars+1.5));" X; J. y! T7 D* P6 u: A
" h+ E# W/ z4 K, l8 V) }5 l+ p: d7 x1 _
: a; f8 h, v% G1 r8 P ~$ u0 k6 V: D% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap7 e3 Y3 t' k) P/ _2 z1 F
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red5 l, |, n; l" N
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];* L' g# D. C) W
hold on;5 f4 Q. j% @$ E$ I$ C# T# |' r
for i = 1:nbars
' ]! V- r C5 ] x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
8 K# n& A& l) N" N errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);+ z) e& p F* e. N7 s/ S
end5 n9 s# R. F4 A7 Q! g3 _( y* a
, q. c5 y' y* u0 e5 T3 b8 \" ~
' G' p" ~9 m, f% h9 N
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)' _! [9 s) r) v
ylim([0 1.5])/ J6 @7 i1 j4 w2 Y
set(gca,'ytick',0:0.5:1.5)4 U3 R# r9 k3 K' F
xylabel(gca,' ','Volume[Sv]')
/ g, ]6 N$ f8 b. Rlegend('data1','data2','location','NorthEast')- v* f8 y$ _' M9 t9 W; g" T2 T* G! o2 o
) e2 }! p; p3 M( a8 ]' D/ { ^
: S1 `% l8 H6 [: [/ ^9 N
以上实例可以参考使用。$ O" I+ a" A- p1 b" M7 \+ E
( `( _1 a5 A6 I+ L" e5 V+ w2 F8 U. H2 c+ C7 o" T9 W$ e
errorbar的局部调整:' c8 d' U5 e' Z3 g% z
1.头部宽度调整
+ v% H% q& k$ N5 x2 ?. o- s0 p& A) l% Create errorbar
1 h* G0 E% Z8 D$ J2 X* }+ |X = 0:pi/10:pi;) q' b6 M; U1 I& v% } V$ e
Y = sin(X) + 1;1 v' Z2 x; x u
E = std(Y) * ones(size(X));3 |: W" R9 e; h# ]- _" l5 N
ha = errorbar(X, Y, E);
9 D0 X4 B5 ^& n- z5 b% Width of the top and bottom lines of errorbar( x* A/ h" _; W5 O1 F |% S" S* e
xlength = 0.2;
' z7 Q4 @; d! |% f# s% Make horizontal lines with 'line'& j- k4 b4 f3 h6 i k0 ?6 }7 ^
for k = 1:length(X)
* O1 Z1 n0 ^1 u/ ^- s- G4 T x = [X(k) - xlength, X(k) + xlength];7 O5 M. J# p2 g( v' h, y
y_h = [Y(k) + E(k), Y(k) + E(k)];8 d: I4 ~! T% b+ Z5 g
line(x, y_h);5 x5 B4 r0 y4 y6 z# w8 D
y_b = [Y(k) - E(k), Y(k) - E(k)];& K) I: N5 K B; @' ~8 e8 U
line(x, y_b);: _3 B) a5 \4 {8 \" q$ z
end8 N( N# H7 T; J, G; s% K9 V
参考:www.52ocean.cn ! O7 E+ f( C4 [$ N
' g/ H* p2 a Y' h- G5 Y# ?
: D* P! u& |" n. a& j- F( W- g
7 H6 _6 t' D) u( e7 a9 h' w) c
) ?- r/ ~; D4 E/ ? w 转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |