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

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

[复制链接]
在数据统计分析时,往往会用到多个数据分组进行比较,这里介绍一种数据可视化方法。
& {  n. I0 j6 m1 R实例:
% Z4 I- U* G! q  f% 数据0 f" {4 Y2 c% q
volume_mean=[0.73,0.45;
+ Z5 Y( W3 ~% ^& c2 e                        0.42,0.43;
, d* }$ f( g4 j  S# J                        0.70,0.42];                        
( p; x" A; U; M0 Gvolume_std=[0.65,0.17;2 k5 |8 w, A& }7 a' l: Z+ t
                     0.35,0.14;( T  {) M$ l! k% A8 z: A! c
                     0.44,0.13];, j& u! l5 ^; n6 _. h+ b
%绘图                     % x1 Y; o! Q/ f% X2 Z
close all;figure;
& t& u* h. F* v* F: sh=bar(volume_mean);. e- |% g- @' r- V
set(h,'BarWidth',0.9);        % 柱状图的粗细
  `4 U  O  _" b8 h2 _hold on;5 |) `# z1 \2 H! I& d
set(h(1),'facecolor',[139 35 35]./255) % 第一列数据视图颜色  ]2 u1 j, G8 J
set(h(2),'facecolor','k')        % 第二列数据视图颜色2 w7 l: ?$ o) K6 s
! B& W. m+ Z  `2 T+ Y; g* {" b8 M
7 H! l' m% y- N6 |$ G' |% h8 \: X
ngroups = size(volume_mean,1);
* [8 R8 y' f0 x2 f0 q5 O. y# hnbars = size(volume_mean,2);
9 z. e( g- M9 l6 O+ k. o  ^groupwidth =min(0.8, nbars/(nbars+1.5));
. t( S$ Q  u2 Z# ]; }/ E  a. v- K" L7 i

) c5 Z' m+ F( A+ M% errorbar如果用不同颜色,可以利用colormap的颜色进行循环标记,这个例子没有用到colormap
8 m* u1 _2 N! Q6 P& j8 }% W%colormap(flipud([0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1]));   % blue / red6 v9 l" O0 w( }5 ]' v; S+ Y7 s. h
% color=[0 100/255 0; 220/255 20/255 60/255; 1 215/255 0; 0 0 1];
3 p* L, \& x) Z/ D0 Chold on;$ T) \3 c" U- d
for i = 1:nbars: }" e7 z* F" ^
    x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);# U2 C& P) O: D5 F, o2 G% r
    errorbar(x,volume_mean(:,i),volume_std(:,i),'o','color',[.5 .5 .5],'linewidth',2);7 y6 ]% z) c2 U9 V
end3 y. C+ y2 z5 ~( s

  t( p# e' n% n, Q' ~
% j7 _; E, c! o  Bset(gca,'XTickLabel',{'2014','2015','2016'},'fontsize',14,'linewidth',2)
( \. b! ~9 y; P- G* v6 K/ wylim([0 1.5])
2 S2 _1 e+ a' o. O/ Fset(gca,'ytick',0:0.5:1.5)
& }1 x" `( ^7 @. m# `/ Y9 I/ c) g$ Vxylabel(gca,' ','Volume[Sv]')0 M7 }" p9 y1 U1 X
legend('data1','data2','location','NorthEast')
# U( G- r. K7 o+ M3 f0 s$ p2 i) G7 D$ y2 V

( ?: }5 |3 \% i' ]# i! X以上实例可以参考使用。- G- L( W3 f5 E# j

+ b  K' |8 J6 _; g4 @% u/ g- [% F
errorbar的局部调整:  K+ K3 v. {+ m1 J
1.头部宽度调整
: r6 E+ Z. n* S% G4 c% Create errorbar% j  E+ C0 p/ m6 M7 \
X = 0:pi/10:pi;
4 {" }( T2 a" X7 Q$ H; MY = sin(X) + 1;
! L+ W6 @$ m+ ]E = std(Y) * ones(size(X));/ u' H( {; O& h2 i- _1 N
ha = errorbar(X, Y, E);+ I3 G- `4 e' B$ @8 x
% Width of the top and bottom lines of errorbar
) a1 s- g: b9 n0 e3 Z! S% Fxlength = 0.2;7 G$ E* N% A+ s, X0 }$ ?
% Make horizontal lines with 'line'
; G' d0 K8 \% x+ P9 J+ k* qfor k = 1:length(X)& Z0 q& Y* m6 m( U' L% x
x = [X(k) - xlength, X(k) + xlength];
, d7 B, Q- @: N( C) C  L y_h = [Y(k) + E(k), Y(k) + E(k)];# u9 S3 D) l; e# P" J' W
line(x, y_h);, I( d/ ]6 P# i: e
y_b = [Y(k) - E(k), Y(k) - E(k)];" r+ |- a$ h. ?3 L: K% I
line(x, y_b);
1 g6 {& ?0 m: R/ y/ f- m0 m; U& {end
# n' Q% o& L0 e参考:www.52ocean.cn
) x- f$ n: u( _; P; p$ w' F0 C: ~( j7 T* s: p4 f$ S

$ i( g$ u0 S; c$ ^9 C6 t7 E! d                    * y2 \2 J2 {# s( t. O& ]$ C, r
0 p  Z  d" R$ K$ ]7 k( R; N( _5 z# h( U
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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