在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
' P; U; ?5 Z% Y! m# S* z: r [实例:8 `: F6 I2 X1 V8 G& ]! J4 U
% 数据! u+ A A, x& e6 s& d, Y4 f7 C
volume_mean=[0.73,0.45;6 k6 l, W& ?6 h6 L7 @8 g; u
0.42,0.43;
+ z" N# P, \ y% ~: {: B8 g 0.70,0.42]; 8 n$ B6 X1 E# J/ Z9 ]6 O/ L- C5 j
volume_std=[0.65,0.17;3 G$ S+ Q7 c* b. U v
0.35,0.14;
* k( _* G4 |: x% @- G 0.44,0.13];9 Q0 x) o* T- {( ?& @
%绘图
$ E, W9 r+ ^8 o5 Z0 l1 yclose all;figure;$ P$ z* [$ f, P% y, O
h=bar(volume_mean);5 P8 }9 r; G$ I
set(h,'BarWidth',0.9); % 柱状图的粗细( ?' v, T; ^ m6 r8 C+ r
hold on; J7 X, O* [) R
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色1 G$ T ], U& u1 f0 b! C6 R
set(h(2),'facecolor','k') % 第二列数据视图颜色, g9 V+ t4 a( f1 P$ P7 n: @
! u9 k0 P* M5 V% J1 P5 C
" f& _5 @$ C1 xngroups = size(volume_mean,1);* R1 E( p6 z6 [4 Q, d: Z% j: J
nbars = size(volume_mean,2);9 I' X# P3 h+ s6 m
groupwidth =min(0.8, nbars/(nbars+1.5));
( }% f9 P6 J `% W+ G0 r9 g5 G* c- c0 z4 q1 ?. O
+ @3 G1 T* d2 y' _) F( h" M% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap
) t' _, {6 _" t6 s" d%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red
& _+ k; v0 d* t4 \) \6 S" ?% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];
* _" {6 l" H# a6 \* uhold on; l) h: k9 c! C3 F0 {
for i = 1:nbars
/ e, z& F& [# D" v& m x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);( Z5 v" U- @& f3 s
errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);; d6 q, c1 C" C9 r3 }: v' _
end
4 M' r1 V$ z, b
+ r; R$ T* m, y9 F" ?' k" o- t c& P) H
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
1 R" x0 A# B: i! u6 @# Iylim([0 1.5])
5 g2 n, X# }$ i* t- V# cset(gca,'ytick',0:0.5:1.5)
$ `- n5 c, m" Fxylabel(gca,' ','Volume[Sv]')
, P) e' N; \& Z3 [! `1 Elegend('data1','data2','location','NorthEast')6 h8 [) W7 u5 z) M! `5 q: q2 F
+ p9 e& D3 l. w3 o+ [
! D3 |2 y- ~) @, j9 q
以上实例可以参考使用。5 V6 x6 h7 x$ o$ \6 D8 T% l% W# R& m
1 i& z" _4 C; E/ ]; S; ` Z: \
, b6 X3 q% H: W6 T. H. ^# [errorbar的局部调整:
1 o6 q9 f1 q- r7 }4 F1.头部宽度调整
/ d5 @! J1 @& {" X% Create errorbar
8 C5 E. e1 a& X3 lX = 0:pi/10:pi;
% m( q4 C* @' P5 a: }' a( H! SY = sin(X) + 1;* Z0 K7 N* V+ O9 Z; L
E = std(Y) * ones(size(X));
) U0 N. i4 X9 L3 @. uha = errorbar(X, Y, E);6 F$ L- G7 o+ c0 P. D
% Width of the top and bottom lines of errorbar
, W$ V& ^& g1 b1 l' _% `5 `xlength = 0.2;% F- m9 N8 |- U6 Z
% Make horizontal lines with 'line'
) Q' Z! W" b: q$ mfor k = 1:length(X), b. j6 h$ W# Y; C
x = [X(k) - xlength, X(k) + xlength];
; T; X/ C' ^' {: c: W. x y_h = [Y(k) + E(k), Y(k) + E(k)];
) a7 }9 Y9 w* _ line(x, y_h); S8 Y! } m8 p9 O
y_b = [Y(k) - E(k), Y(k) - E(k)];
/ T9 M" e& l8 D) y8 ]+ { line(x, y_b); p! ?0 Z& A1 C) ~* n
end+ q. p0 o! a4 {+ R2 |4 d0 a; S
参考:www.52ocean.cn
5 B4 q$ ?9 ?: T2 j/ M
& J) Z. E$ n% Z
1 y$ L4 B6 K5 k3 D
/ M+ Z3 Y3 |5 B' f0 g8 ^: }# W: G5 ^# K" l& ?* Y2 A
转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |