matlab中bar画自定义柱状图

周末下雨实验室里做作业,发现用excel画的柱状图略丑,且达不到我想要的样子,就各种百度找到了一点技巧,记录下来,方便自己或者有需要的同学使用

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

若将一组为负值,直接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);
hold on
bar(x,-1.*data(:,2),'FaceColor',[0.05 .45 0.1],'BarWidth',0.5);
 ylabel('客流量(人次/小时)','FontSize',14)
title('全日断面客流量','FontSize',14)
set(gca,'yticklabel',get(gca,'ytick'));%y轴不显示科学计数法
set(gca, 'FontSize',12,'XTick',xx,'XTickLabel',station);%设置标注位置和标注内容
set(gca,'XTickLabelRotation',90)%使标注旋转角度
set(gca,'xaxislocation','origin')%使横轴标注平移到图形中间位置
legend('下行断面客流','上行断面客流');
%图形框的邮编和上边容易出现刻度,这往往是不需要的,可通过如下语句将其去掉:
box off  
ax2 = axes('Position',get(gca,'Position'),...  
           'XAxisLocation','top',...  
           'YAxisLocation','right',...  
           'Color','none',...  
           'XColor','k','YColor','k');  
set(ax2,'YTick', []);  
set(ax2,'XTick', []);  
box on  

效果如图:

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fff2zrx

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值