收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

【MATLAB】一组含几个bar的柱状图的绘制以及errorbar的添加

[复制链接]
在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
5 g/ N8 s- ~. c# k' R7 z实例:
7 I0 l6 c: y1 @8 C0 u  V+ \% 数据( N: q; P% _. q1 {
volume_mean=[0.73,0.45;1 z; Y9 }% j6 ^' n7 R( [
                        0.42,0.43;
# z0 g( s0 r, _/ e  K6 R. I: }                        0.70,0.42];                        
9 @" F7 g" k' j9 k4 avolume_std=[0.65,0.17;
: k5 H& L( ^* W/ W$ _* ]                     0.35,0.14;/ H, {3 G+ t* S% Q- f3 ?4 Q/ H
                     0.44,0.13];
( D% g) t9 u" `/ S%绘图                     " J% ]' K( B+ }% g( k. Z
close all;figure;/ k" n, }9 a( \1 m, Z( Z* R
h=bar(volume_mean);. S6 q8 u7 k  Z! x& x+ ?
set(h,'BarWidth',0.9);        % 柱状图的粗细
! [6 ]6 d1 ~. Mhold on;% S9 g( i9 S% G# q  T1 K' h- ^, ], ]
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色
. H# \1 M& R: x& q+ x1 _set(h(2),'facecolor','k')        % 第二列数据视图颜色
' j* s6 C6 w& ^0 k6 @% P+ m) T6 q1 x* Y$ S9 Q  R7 q
/ k# G! Z8 a2 }0 r  D& C: ^( m, M% {
ngroups = size(volume_mean,1);
* @& F4 A( i. R) E% z. n7 fnbars = size(volume_mean,2);( M; D: ], r8 h/ |' V7 t
groupwidth =min(0.8, nbars/(nbars+1.5));
5 q) ], S8 @: [1 e# l) j3 p2 b
' e. t: E* q; h! t5 M0 Z8 w" Z+ I3 f) }+ c' z' D
% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap+ \2 _  ^6 R7 \
%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1]));   % blue / red6 p5 J+ x7 f: j) i+ z' U
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];! L% r% X) @* ]4 W* {: p& \4 u
hold on;3 X0 l  z$ ?9 r% h- T( p; F
for i = 1:nbars
8 t0 k* ]6 A9 v6 V    x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
' C# u6 T) v6 f: X9 v    errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);( q3 f1 `/ Q0 Z! n. d% r' F
end( I9 ^) E9 a' w" X9 u0 m( t8 X
" E+ D) r$ E4 W" G# L/ r
: c" r" a( K/ x: a) a
set(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
$ \3 B4 S9 a1 q# R/ r, ]5 a% \ylim([0 1.5])* L7 f# w* E* q. \. H" V5 q
set(gca,'ytick',0:0.5:1.5)0 _7 z5 Q. F; u, b3 `* m
xylabel(gca,' ','Volume[Sv]')  j$ r6 `4 ]" b- u9 F
legend('data1','data2','location','NorthEast')
) _# K4 n5 _" h' k1 h8 o$ Q" Y* q0 {, W. ]( ]0 j( s4 ^
- f- I* |& Z8 g- V5 @2 @# e
以上实例可以参考使用。- `0 `1 b4 ?  y+ d3 s' ^" E
; A' S3 _6 m- m- a

6 h9 ]7 C: ^8 @1 Y; M/ W- O' ~errorbar的局部调整:
. D' O' I  n% r/ `4 }1.头部宽度调整  T& g6 a4 [- Y  D
% Create errorbar- s4 e# ]" R8 a$ L4 D9 ]
X = 0:pi/10:pi;
5 I+ F/ z% _& H/ \  W/ jY = sin(X) + 1;
: {. y- G; n5 |1 aE = std(Y) * ones(size(X));
  U! m' E" T( Q# Mha = errorbar(X, Y, E);. F* @: q' F7 {% c7 U( M
% Width of the top and bottom lines of errorbar
) v( ]! V5 u/ @1 hxlength = 0.2;
( O: ^3 ]( V$ z  x) g8 f% Make horizontal lines with 'line'
8 }6 i% q/ _/ \- Kfor k = 1:length(X)
2 F) n0 J+ Z; D1 @5 D x = [X(k) - xlength, X(k) + xlength];3 D( D0 |! w  W/ S) N) k! n# N
y_h = [Y(k) + E(k), Y(k) + E(k)];+ r) Q8 i9 U, R3 z$ P  _
line(x, y_h);& P% {& O* I! B7 `+ ^
y_b = [Y(k) - E(k), Y(k) - E(k)];( s7 W' w- H5 y: O0 y( u/ t
line(x, y_b);# j( O& U8 |0 C/ A0 p: B
end8 w% l: M  w( J
参考:www.52ocean.cn
" U! ^' X, J# c' t
: f2 Z/ {5 e$ v5 S7 F
8 J/ D7 D2 N5 c+ [                    
+ U1 Q: ~! L3 G4 ^" M8 x; W# H5 ~% @' F6 O8 ^' R
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
黄金品质
活跃在2021-12-8
快速回复 返回顶部 返回列表