EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 baqiao 于 2020-12-15 13:09 编辑 3 v3 m0 I% j$ b. u j
+ P1 e1 B# i/ N( @. |2 ~1 n
想要绘制这种一正一反的柱状图,且标注在图形的左右两边,样例如下:
3 A& O$ E. n/ l" p J
+ @/ S# N& e) `- t' s若将一组为负值,直接bar(x,[y1,y2]),则图形上下会偏移错位,最后总结如下有注释的代码: load s.mat%加载标注内容
T' W$ O6 `2 S3 l; Ix=2:2:46; xx=1:2:47;%与上面x正好错位,使标注在图形左右两侧 %以下为分别两次利用bar进行两次绘制,并利用FaceColor属性进行颜色区分 bar(x,data(:,1),'FaceColor',[0.7 0.7 0.7],'BarWidth',0.5); q/ C5 U M- Q6 ]
hold on. T# s$ b2 k/ o5 N" f- e
bar(x,-1.*data(:,2),'FaceColor',[0.05 .45 0.1],'BarWidth',0.5);0 ~# K: {; Y' M) A
ylabel('客流量(人次/小时)','FontSize',14)# Q- b7 \* k7 {8 f7 X
title('全日断面客流量','FontSize',14), V9 O2 v. l$ U' i8 b7 a5 Z" K
set(gca,'yticklabel',get(gca,'ytick'));%y轴不显示科学计数法( b: V: d9 P/ m0 {0 Z( g
set(gca, 'FontSize',12,'XTick',xx,'XTickLabel',station);%设置标注位置和标注内容9 Z% ]& E$ m# A1 f/ E+ n
set(gca,'XTickLabelRotation',90)%使标注旋转角度
) |) A+ L( W0 nset(gca,'xaxislocation','origin')%使横轴标注平移到图形中间位置
; j" g; z9 U" j/ J8 |# klegend('下行断面客流','上行断面客流');1 G- n$ s6 V7 T5 Y) B& }. D
%图形框的邮编和上边容易出现刻度,这往往是不需要的,可通过如下语句将其去掉:- E) g/ Z' `1 B
box off
# T; F7 S9 ]" J$ {6 m3 aax2 = axes('Position',get(gca,'Position'),...
) y Z9 r# s. A* `' d. X2 j1 i8 C 'XAxisLocation','top',... " } Q3 V F e* z' }$ K4 B
'YAxisLocation','right',...
. k8 i/ ?/ M" w y 'Color','none',... : b! U" A- I; p D, M8 {
'XColor','k','YColor','k'); , f4 a9 F/ R4 [) E0 Z4 A( G
set(ax2,'YTick', []);
- Y2 `' s+ [' X0 l. { s- Uset(ax2,'XTick', []); / [, A1 b) P, ~: N, K
box on 效果如图:
|