在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
. A: O) a) o- u- |' [0 V实例:
5 w& ?$ m" U+ u( C" F% 数据
" b' i4 Z5 \! m0 e8 Bvolume_mean=[0.73,0.45;
7 q, S9 R8 Y/ n 0.42,0.43;# Q/ Z9 R& R3 ? ^6 r1 J
0.70,0.42];
8 i3 G+ J$ w% p% H8 u7 [volume_std=[0.65,0.17;
5 L) I ^% X6 J( f" P' Y7 U 0.35,0.14;2 p3 l7 F; R& Y9 K9 ?! ~: c
0.44,0.13];
! t0 r2 o2 o2 }3 b5 l: y* i%绘图 0 d7 X2 ^& c6 g7 S7 Q$ e9 ~3 h
close all;figure;
! h* ?( ~3 ~- o3 w* ^h=bar(volume_mean);
$ |2 U; Q: c' o) A% [9 M6 gset(h,'BarWidth',0.9); % 柱状图的粗细. j" |$ J% ^+ H' U1 U$ F
hold on;3 T; S- B3 O) T" q: }
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色* y* c9 |; [3 d( ^) Q
set(h(2),'facecolor','k') % 第二列数据视图颜色
$ P: N* x; A& ]$ _& p- H5 T
3 G& w3 H( _' q; o! r ?" H1 }' O5 v
ngroups = size(volume_mean,1);4 M- \4 A5 C$ Q4 a P4 X* d8 }# a
nbars = size(volume_mean,2);
$ U6 U' o$ R8 q+ R2 [groupwidth =min(0.8, nbars/(nbars+1.5));+ n- y) c/ X0 C
% R+ r) E2 G% X4 Q7 `% z9 P4 t; X4 C, ?
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap" n) V8 z) z, l: C! A' k" f4 x
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red
& ^. h$ W: C/ C0 n* B0 v% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];! P; |) v) L. T
hold on;
* I9 s/ O* t* P Xfor i = 1:nbars* T5 v5 Q* t) ]$ l7 v+ J8 I; d
x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
7 M) h$ g- m, ^" E" M errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);
9 h. l& ~# e+ @0 t. K5 _- ]end
5 Z$ M' `! |+ l# d
. E0 S% {/ Y/ M0 y h, N+ p
( c) i; w' T/ j+ R! i* J# e9 V0 Cset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)2 k$ r' D M: p
ylim([0 1.5])
5 a- Z$ n$ O7 A5 s. Kset(gca,'ytick',0:0.5:1.5)! R, z- k; [/ B: ~" j: x9 {' N& j5 {
xylabel(gca,' ','Volume[Sv]')
% w. P4 a$ x. b" \legend('data1','data2','location','NorthEast')% ^) J V2 S0 |& L' H% D
- i9 p c' H# v7 }
. G0 M8 j/ @# ]) a) ~5 `0 ~" \# h
以上实例可以参考使用。6 R5 \. P; l' p9 [( C; N L( F
; T" l \6 v3 w) o0 l( `
" z4 Q( m4 N, a" \9 ?
errorbar的局部调整:( ^8 l c4 T L& G
1.头部宽度调整7 ]9 E8 {1 ^0 c- w1 z3 ]" y$ m
% Create errorbar
6 d z! t2 m( S: O6 Q- P4 nX = 0:pi/10:pi;
( _' s& c% r/ h CY = sin(X) + 1; ~/ r# }, W/ j( P5 p
E = std(Y) * ones(size(X));
! D' t* B2 Z2 Q5 v7 Q, cha = errorbar(X, Y, E);
3 Q- t" t2 B' \3 I8 _% Width of the top and bottom lines of errorbar& C! [) N& O2 t. V |- w1 \* x& b) b, Z
xlength = 0.2;
" _! S; G7 ~- Z5 B# c: B5 }% Make horizontal lines with 'line'
P! O) k8 a0 z7 w7 }for k = 1:length(X)
/ t' L e2 y) B" W+ t9 V3 m x = [X(k) - xlength, X(k) + xlength];
$ l( {' t5 L2 f/ I+ e# o8 j* k y_h = [Y(k) + E(k), Y(k) + E(k)];+ O' u! z3 b# s; C" ]% A5 L
line(x, y_h);) C8 I! v5 O! A9 w+ s9 Q! A
y_b = [Y(k) - E(k), Y(k) - E(k)];' E/ M: G; P0 ~9 h: z5 f B& J
line(x, y_b);
: Q' _0 c7 u7 F: Z3 b# Aend5 _5 h4 Y$ Q* u7 _' D5 r. b) z4 ?3 P) M
参考:www.52ocean.cn * f3 A* ]& k5 z! ?" ~4 M+ Z
; d2 ?; n3 K" }; ?# l: I) \0 ?) l
& ~5 j; V% v1 k1 a) \; E
( V" _ C2 d1 j, }. Q O1 f
5 S# f. M, P% R5 s" E. f5 T) E 转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |