柱状图"/>
Matlab 绘制双y轴柱状图
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、数据准备
- 二、处理思路及代码实现
- 1.x的处理
- 2.y的处理
- 3.绘制条形图
- 总结
前言
自己在论文出图的过程中,想用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';
然后就能得到向前面展示的那样的图片;
嘿嘿嘿~
总结
感觉这种方法比平移右边坐标轴的起始位置要简单,当然也是本人数据有时候捣拾不明白;如果大家有更简单的方法请指教!
更多推荐
Matlab 绘制双y轴柱状图
发布评论