在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。 y' a; |! p3 W" L$ q2 r
实例:
+ P8 R5 ~; k Q+ @, M6 u% 数据6 `* H# F( A" J9 h
volume_mean=[0.73,0.45;
/ X; J b# I6 b 0.42,0.43;
% K* K' F1 o& |% K( R 0.70,0.42];
( I8 b4 n' X( |. ~1 kvolume_std=[0.65,0.17;
/ u& F M y a4 Z. V+ @ 0.35,0.14;; f8 e) q( r, e4 n4 V+ l' x
0.44,0.13];
N! t9 u' M" }5 ^2 _%绘图 & |1 P x# A) P5 W/ w
close all;figure;
" D8 }1 J! H$ o/ b, p9 x0 s9 ]' Ah=bar(volume_mean);
& ~% u- s! G; _- b' y. J) h; aset(h,'BarWidth',0.9); % 柱状图的粗细
$ B/ p# U m- C! D! e+ k5 j8 Ghold on;
* S* P- ^% _5 F( ~9 n; q( H/ E @7 yset(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
x- a1 Y0 g( V5 p! q* u3 p, uset(h(2),'facecolor','k') % 第二列数据视图颜色0 z" m% I) k- f/ e
# m! m$ S1 z3 H
* K2 }5 o" p) R$ ^ngroups = size(volume_mean,1);
- X) `5 K1 l* W/ nnbars = size(volume_mean,2);
+ ?* J' N; X- Q% mgroupwidth =min(0.8, nbars/(nbars+1.5));
, w: f& d' U! ]5 O
- O" i y& K* o: [1 ]- K7 `% a' V
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap- t0 L# h3 B; }- H
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1])); % blue / red' J" b# g4 A* |7 F
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];- i* J u4 T) {5 w
hold on;
2 b8 Q% q5 |& U( I) z6 Q) \: Lfor i = 1:nbars
+ U, V: v' w! ~) L& F x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
: i0 x& I4 n$ Q# \' e H errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);+ j# T8 `7 T- Q4 Q: ]; I
end& G1 b2 C' v- y- x& m
* Q: M! ^5 x% I7 k
3 O9 X9 a; b( y0 x8 Jset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
! ^; n' Y" n! M8 Y. Vylim([0 1.5])3 G4 n z3 W+ q# J* z8 F
set(gca,'ytick',0:0.5:1.5)
/ y. v# _' B* Sxylabel(gca,' ','Volume[Sv]')
* k6 @4 v5 S/ q* xlegend('data1','data2','location','NorthEast')
, a% e' B. T/ V1 h. f! |) q) n: z7 H' ], s$ ~) r
2 R) \ z$ G: H; I: C
以上实例可以参考使用。
0 b# g) g9 {, |) D
. S* P" b: \2 ?1 e! J
' x0 S ^5 A1 q7 j0 Uerrorbar的局部调整:! j: i' L& B( f* L: m. m; ^
1.头部宽度调整
2 q) I3 |6 P3 w+ G- _3 o7 W0 V. W5 }% Create errorbar8 ^ {+ u% K g+ ~/ e- ?/ l# s
X = 0:pi/10:pi;% J3 r' S% k4 u
Y = sin(X) + 1;# m" g) Y2 P7 q2 h' R$ R6 u; X/ A
E = std(Y) * ones(size(X));
9 [. K9 J8 m: Y a$ Qha = errorbar(X, Y, E);: ?2 _, o% F5 H4 A
% Width of the top and bottom lines of errorbar
# m# d0 w8 M# Kxlength = 0.2;
: F q2 @! [6 l% Make horizontal lines with 'line'
4 T* H | m: \for k = 1:length(X)0 [/ i7 D* f; W4 l; s$ I5 U
x = [X(k) - xlength, X(k) + xlength];
% j( n, Z: j! A. i. `' v9 k y_h = [Y(k) + E(k), Y(k) + E(k)];
7 z3 ]+ q( M: `& k2 j! @ line(x, y_h);
9 j5 I/ f4 ]& B7 A% @' L2 b+ B/ J' ` y_b = [Y(k) - E(k), Y(k) - E(k)];
0 S" t* m4 c. E9 S line(x, y_b);, a2 h6 ^9 V; X+ Y8 h9 ^( ]$ f
end
0 t8 P V) Y o参考:www.52ocean.cn
& t% g, Z3 K# r" s0 }% v3 B* c7 J
. y! b0 z4 }6 c2 l9 @+ L& F! F* I' _* E' {: O
* o% ?) r! \+ U1 I* B4 }. b3 g2 R
) o- V% \ d, c+ Q' t/ t8 C
转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。 |