Matlab 绘制双y轴柱状图

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

自己在论文出图的过程中,想用matlab出类似于下图这种:1、两个y特征数量级差距大不适合用单个y轴绘制柱状图;2、x轴坐标不是数值而是分类的柱状图。
目标图样式

基于上面的需求,找到了一个笨笨无脑的办法来实现上述功能。


一、数据准备

原始数据

x=({'类别一','类别二','类别三','类别四','类别五'});
y1=[3,5,8,11,13];
y2=[0.01 0.06 0.04 0.08 0.05];

二、处理思路及代码实现

1.x的处理

代码如下(示例):

xx = categorical({'类别一','类别二','类别三','类别四','类别五'});    %定义分类数组
xx = reordercats(xx,{'类别一','类别二','类别三','类别四','类别五'});    %调用 reordercats 函数来指定条形的顺序

2.y的处理

运用‘yyaxis’将y1和y2画在两个图层,为了保证两个图层不重叠,引入两个零数组

代码如下(示例):

y1=[3,5,8,11,13];
oo=[0,0,0,0,0];   %引入的零数组
y2=[0.01 0.06 0.04 0.08 0.05];

3.绘制条形图

yyaxis left      %激活左侧
hold on
b1=bar(xx,[y1;oo]);    %引入零数组
ax = gca;
ax.YColor='black';

yyaxis right      %激活右侧
hold on
b2=bar(xx,[oo;y2]); %引入零数组
legend([b1(1,2) b2(1,1)],{'图例1','图例2'}) ;   %只显示原始数据的图例
box on
ax = gca;
ax.YColor='black';

然后就能得到向前面展示的那样的图片;
嘿嘿嘿~

总结

感觉这种方法比平移右边坐标轴的起始位置要简单,当然也是本人数据有时候捣拾不明白;如果大家有更简单的方法请指教!

  • 17
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值