想要绘制这种一正一反的柱状图,且标注在图形的左右两边,样例如下:
若将一组为负值,直接bar(x,[y1,y2]),则图形上下会偏移错位,最后总结如下有注释的代码:
load s.mat%加载标注内容
x=2:2:46;
xx=1:2:47;%与上面x正好错位,使标注在图形左右两侧
%以下为分别两次利用bar进行两次绘制,并利用FaceColor属性进行颜色区分
bar(x,data(:,1),'FaceColor',[0.7 0.7 0.7],'BarWidth',0.5);3 e' p; [% ?* u
hold on
bar(x,-1.*data(:,2),'FaceColor',[0.05 .45 0.1],'BarWidth',0.5);
ylabel('客流量(人次/小时)','FontSize',14). {$ J7 F! k$ A7 ]. m
title('全日断面客流量','FontSize',14)' [% C; l l, X
set(gca,'yticklabel',get(gca,'ytick'));%y轴不显示科学计数法7 R- Q2 j% O; E1 \
set(gca, 'FontSize',12,'XTick',xx,'XTickLabel',station);%设置标注位置和标注内容) O. k* j* T5 m) m
set(gca,'XTickLabelRotation',90)%使标注旋转角度& n1 n1 ^" _' [! H3 q# i/ Q
set(gca,'xaxislocation','origin')%使横轴标注平移到图形中间位置. N# p/ |' F; N3 g- k
legend('下行断面客流','上行断面客流');
%图形框的邮编和上边容易出现刻度,这往往是不需要的,可通过如下语句将其去掉: Y: D$ m* c1 Z0 A; D
box off
ax2 = axes('Position',get(gca,'Position'),...
'XAxisLocation','top',... / t7 T1 \2 X" T3 S5 R, y! K1 ^
'YAxisLocation','right',... 6 P9 ?1 A% H; b( Q% X% r
'Color','none',...
'XColor','k','YColor','k'); 6 J d( C3 ]1 ?9 O# K
set(ax2,'YTick', []); 1 _$ }& Q( m- U# w+ Z
set(ax2,'XTick', []);
box on
效果如图:
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |