在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
- Y8 E& D0 \% ?6 h实例:
4 c- ^2 S! v, Z8 p% 数据! G: b) m! n8 @- V
volume_mean=[0.73,0.45;
! t2 N3 N$ W( i- b8 e" a' x 0.42,0.43;
- x" a* s* |* m& ^6 A) l, O9 |0 M 0.70,0.42];
0 {3 U' s: |9 v+ D4 f- [, ^volume_std=[0.65,0.17;: |- s8 E1 E I
0.35,0.14;' C" c2 A! {" m
0.44,0.13];/ T2 |2 N d# H5 L1 K9 N( S
%绘图 & W0 x" v6 C. [/ v: V U2 y
close all;figure;% o8 O. j9 X& \# S5 h4 Y3 p
h=bar(volume_mean);
3 m" P' W+ W2 ]1 Z+ x9 b" xset(h,'BarWidth',0.9); % 柱状图的粗细
3 {' m5 M. e- [7 k0 l9 shold on;% s# N; }- [2 \' t S% F5 ]3 v8 E
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
; I; `7 L; v0 Z7 Aset(h(2),'facecolor','k') % 第二列数据视图颜色- ^" {1 a) I. V0 Y* L2 \
( m, V& ]; m1 m7 T
. m6 M% B4 U- d/ N Ingroups = size(volume_mean,1);3 `6 ^5 N( W0 H3 A. X
nbars = size(volume_mean,2);' P( b- }; l0 F7 m4 P
groupwidth =min(0.8, nbars/(nbars+1.5));
/ r: B0 e% {8 q. L
; a9 Y% v- A/ o+ U) T0 I* q' x
9 c- X$ G6 C: y# r3 j% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap3 ^; d) X; ~. V
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red
: C! P, o* Z' f0 N- p% y7 E% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];2 q" p2 l# y! Y3 F: D) Q
hold on;0 N; Y: U4 U$ R) `+ `; ~; ]
for i = 1:nbars; a% |- E# A2 {6 x
x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);4 D& ^! B# K0 d3 v, A- m6 H
errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);! A- y6 t/ @- ~% A6 r0 v
end
& K9 V! C9 q; K2 K4 K. q; O$ [6 r/ L, n4 A
3 v, {* g6 x- o- e! V2 l
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)8 Y2 w4 N( o4 B7 d% G+ x5 v0 W
ylim([0 1.5])
# S. G6 w" z* q2 a- x4 Lset(gca,'ytick',0:0.5:1.5)
0 ^4 b/ U& u2 `9 _* ixylabel(gca,' ','Volume[Sv]')
1 d7 e, k7 B5 k/ C5 }legend('data1','data2','location','NorthEast') K I# H+ f, M& Y" E
% N4 H! n5 q( b7 g4 n
3 E' v& a- q5 t以上实例可以参考使用。
% G8 M& |7 k- A( }8 Y) \- Z4 l7 j8 I; @
" m8 b% ~4 j& p$ U+ O7 I0 d
( B# f( q* d/ O6 ?2 ]( eerrorbar的局部调整:
) L; T* a2 k$ i1.头部宽度调整9 m5 A. }% K. v
% Create errorbar
- |' x" {4 B2 u e9 ], q1 h' gX = 0:pi/10:pi;
$ k% @; n4 l6 S0 {4 z6 k% t3 W' `Y = sin(X) + 1;* J+ F5 W+ B: B) A4 \
E = std(Y) * ones(size(X));
' n6 q2 J& }* A! I; E1 S) b$ qha = errorbar(X, Y, E);
' h# T! D2 ~1 u& ?1 H( b3 [- C5 n' ]% Width of the top and bottom lines of errorbar, O! @$ M3 b7 U
xlength = 0.2;
4 Y- |& l3 U" U, ~; G% Make horizontal lines with 'line'
( t/ x+ |5 y2 l* a' {for k = 1:length(X)
' b2 T. {5 r' K: v0 I0 D/ ?) V9 J x = [X(k) - xlength, X(k) + xlength];
* r( g0 d! E8 U! n y_h = [Y(k) + E(k), Y(k) + E(k)];2 y+ O. U9 {( O4 Q
line(x, y_h);/ @- c) G+ g& b6 r! B
y_b = [Y(k) - E(k), Y(k) - E(k)];: e8 z/ k& _* D/ g/ L
line(x, y_b);
" T4 `9 H" K( H5 R- b' L) w0 Z0 Jend
! p, P# v/ `: B% @参考:www.52ocean.cn ' k; N0 s& [. q
/ r7 U4 U S0 }$ h% c+ L
8 v9 z! @- W5 c2 j0 j0 ]
% M7 y- m! g9 m9 A5 h8 m% S8 ^0 j' a4 V6 j( [5 W
转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |