EDA365电子论坛网

标题: matlab中bar画自定义柱状图 [打印本页]

作者: baqiao    时间: 2020-12-15 10:41
标题: matlab中bar画自定义柱状图
本帖最后由 baqiao 于 2020-12-15 13:09 编辑 9 V+ {1 Q0 w3 h0 @1 N: v$ Q: e

3 A( |% V. x" I

想要绘制这种一正一反的柱状图,且标注在图形的左右两边,样例如下:


2 h  a4 C0 j  \5 V8 f& j

1 ]0 v) ~2 w  H

若将一组为负值,直接bar(x,[y1,y2]),则图形上下会偏移错位,最后总结如下有注释的代码:

load s.mat%加载标注内容
5 U7 ^; f2 a+ \! e2 k7 Q0 Qx=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
9 E5 e5 }8 X: n5 E. ~$ u% Ebar(x,-1.*data(:,2),'FaceColor',[0.05 .45 0.1],'BarWidth',0.5);
2 g7 \* k2 ~; |2 u6 g 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('下行断面客流','上行断面客流');
( z3 x- z, R& ?- `( f: t%图形框的邮编和上边容易出现刻度,这往往是不需要的,可通过如下语句将其去掉:  Y: D$ m* c1 Z0 A; D
box off  
' g& \( f# [5 Gax2 = axes('Position',get(gca,'Position'),...  
' f/ U  O; o! J( A           'XAxisLocation','top',...  / t7 T1 \2 X" T3 S5 R, y! K1 ^
           'YAxisLocation','right',...  6 P9 ?1 A% H; b( Q% X% r
           'Color','none',...  
+ |9 I; K8 R' p6 l2 u+ k) ?/ h3 A           'XColor','k','YColor','k');  6 J  d( C3 ]1 ?9 O# K
set(ax2,'YTick', []);  1 _$ }& Q( m- U# w+ Z
set(ax2,'XTick', []);  
5 B. M: g( G: t  }4 u0 lbox on  

效果如图:


作者: NNNei256    时间: 2020-12-15 13:08
matlab中bar画自定义柱状图




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2