在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。* W" u0 G8 ~, Y# r: h
实例:
5 J( x; `2 R" }* h& p: o J% 数据0 z- [1 G3 Y9 O Y
volume_mean=[0.73,0.45;
$ N8 D6 s1 C- Z9 a 0.42,0.43;
+ C1 a# ~' x% I 0.70,0.42];
9 J- B# n3 \# S* P! T8 z- {; ?( ovolume_std=[0.65,0.17;/ ?( s( N; x( ]2 J! ^+ u D3 l) d
0.35,0.14;7 L9 A4 D$ q F; |$ A
0.44,0.13];
0 L) a2 N3 y8 M; w%绘图
3 T9 ~+ a* I) Y3 I9 M, mclose all;figure;
% k1 G0 H, L' C, b0 b: t7 Sh=bar(volume_mean);
9 l! v* }: W( ]3 n1 Bset(h,'BarWidth',0.9); % 柱状图的粗细 X/ P4 m0 H8 R7 r
hold on;
8 Z9 w2 V3 P7 X! p! bset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
' N4 I; k; k7 Z6 p0 Fset(h(2),'facecolor','k') % 第二列数据视图颜色
, _2 A& Z8 ]& o7 L0 _3 k! b
9 \ ^6 n2 h+ O% z" v2 r
3 B2 E& P) P4 R. Xngroups = size(volume_mean,1);/ g! g3 ~7 W$ `3 R
nbars = size(volume_mean,2);3 O; W+ D' [ B5 }! h
groupwidth =min(0.8, nbars/(nbars+1.5));
. e" f" Y) r* g8 K
4 m3 r* m. M4 g! H7 \/ d" y, i: D+ a$ ~
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap1 q& g% @7 m# h3 I" S
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red* M# D. p( r+ Z. P) T/ x
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];
. D; M0 q* J/ S& }, U9 K) Whold on;' G& B2 L& A) Z$ O9 ]- r' W4 b0 B
for i = 1:nbars
( B2 }1 g6 {1 W. @1 `7 m x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
. m- R$ a9 ]* e7 X9 a errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);& ^2 f+ s, W6 q; Q
end
) i& M5 O2 G) {7 W
4 X; C8 w0 n; b1 Z% O4 P8 P1 y. ?0 j8 P, S+ K2 A5 b0 b
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)# T, F* U0 H8 t& @( r8 n
ylim([0 1.5])
" ]( q% C: E- A% i+ Wset(gca,'ytick',0:0.5:1.5)
6 X( E5 h0 j% j4 nxylabel(gca,' ','Volume[Sv]')% L& g4 o( s" `% r- |
legend('data1','data2','location','NorthEast')5 e4 r" J. T! Y% W1 e, I5 \
" N* _. z2 f4 t1 i
' a g8 Z4 [, C0 s& m以上实例可以参考使用。5 r5 h7 k8 v6 E3 k0 o/ V7 E1 R
/ J( E( {( p5 G
4 k, y' i8 o0 L7 E
errorbar的局部调整:
8 V7 L: Y; z7 w0 S8 j; q8 K0 |; b1.头部宽度调整
9 r9 ]- Y; l9 \2 X- X; M2 _% Create errorbar
5 ^2 t7 o/ W, _( ^8 LX = 0:pi/10:pi;
7 q3 O! k2 D- ?" ^: x& I0 T4 HY = sin(X) + 1;
" {/ F V& Y# Y/ C8 [" h4 ^' tE = std(Y) * ones(size(X));) i& C0 m7 l2 M. N3 q
ha = errorbar(X, Y, E);
8 R6 g$ A/ S; |( M% Width of the top and bottom lines of errorbar) g8 {4 z1 g3 H2 q4 T2 f% B4 B
xlength = 0.2;- R, U) n) u7 F% ?: W8 y
% Make horizontal lines with 'line'
, e. r3 i6 D& x% k. \for k = 1:length(X)
1 I) I w( W4 w% X! j0 m" j' b x = [X(k) - xlength, X(k) + xlength];
# u1 e/ Z7 ~( v$ [2 @ }0 i y_h = [Y(k) + E(k), Y(k) + E(k)];6 C# `' E! P% w7 i0 c# u7 h
line(x, y_h);3 n- ^/ k! A, I9 l/ \; {
y_b = [Y(k) - E(k), Y(k) - E(k)];$ w# g: r! [" E0 v* ]2 V* |: n
line(x, y_b);# M- T+ R, c$ v7 { T% z
end
, C B8 T& G) W参考:www.52ocean.cn 6 ?2 T+ x& _$ U* _# G) l$ {
: P# w( c; ?% a# A" f2 g
. Q$ `: r; v1 R- z! y* Z
# ~: c+ r. ~/ J7 B6 M6 l4 n1 T. m7 c9 [" F! d; w
转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |