EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 baqiao 于 2020-12-15 13:09 编辑 4 _3 T. ^6 z7 J
/ k) x: j' u/ }* ]9 J$ L1 X想要绘制这种一正一反的柱状图,且标注在图形的左右两边,样例如下:
1 B5 v4 g* @2 ~! P* {
" s4 h$ K( K3 v/ G, F3 N若将一组为负值,直接bar(x,[y1,y2]),则图形上下会偏移错位,最后总结如下有注释的代码: load s.mat%加载标注内容
( a5 N6 }; b% x5 T2 \. Cx=2:2:46; xx=1:2:47;%与上面x正好错位,使标注在图形左右两侧 %以下为分别两次利用bar进行两次绘制,并利用FaceColor属性进行颜色区分 bar(x,data(:,1),'FaceColor',[0.7 0.7 0.7],'BarWidth',0.5);
! \( D" S ?4 g0 p) F* k+ s7 Ihold on# \8 u5 H- c+ Z; ?5 X# L5 @
bar(x,-1.*data(:,2),'FaceColor',[0.05 .45 0.1],'BarWidth',0.5);
4 |3 ?( ^& u. _: Q4 `4 o. ]* F, R+ [ ylabel('客流量(人次/小时)','FontSize',14)! t8 A! k3 z( {+ z' M ^. x# d& x
title('全日断面客流量','FontSize',14)
: m+ r1 Q7 n9 Y: X" x0 z* Gset(gca,'yticklabel',get(gca,'ytick'));%y轴不显示科学计数法
' X$ h- j( _4 a" A5 rset(gca, 'FontSize',12,'XTick',xx,'XTickLabel',station);%设置标注位置和标注内容
) b; h9 b7 H) w- Uset(gca,'XTickLabelRotation',90)%使标注旋转角度1 [, n2 E$ N) t7 b8 e; s
set(gca,'xaxislocation','origin')%使横轴标注平移到图形中间位置
6 e! x8 z1 j! J0 N! b1 j# s L8 ~1 ulegend('下行断面客流','上行断面客流');
8 U; r' [# h* P# B5 _%图形框的邮编和上边容易出现刻度,这往往是不需要的,可通过如下语句将其去掉:$ R- I. O9 [5 \4 I; J
box off
# \$ e0 z5 m# c2 E& d5 vax2 = axes('Position',get(gca,'Position'),...
) }. Y" I) N9 K$ D8 z 'XAxisLocation','top',... 5 D, h9 P7 E4 M$ a! Y
'YAxisLocation','right',... 5 u$ H- Z+ S) R# c: J
'Color','none',...
5 s5 s/ _& A- B. p+ ^ 'XColor','k','YColor','k'); ! l; t8 Y( }2 l; U7 d2 j
set(ax2,'YTick', []);
6 I. v5 q B7 S7 E% vset(ax2,'XTick', []);
( E5 N! i0 H. @" k3 cbox on 效果如图:
|