假如我们想用Matlab绘制这样一幅图:
柱形图bar1表示算法的精度,柱形图bar2表示算法的运行时间,两者是同一参数X的因变量,但所代表的是完全不同的事物,很难在同一张图表示。
即便是在同一张图,你能找到的,要么两者重叠在一起,
来源:百度知道
要么两者是分开的:
来源:CSDN-tianren9
如果要同一X对应两个不重叠的bar,该怎么做呢?
之前分享过Matlab柱状图的绘制模板。
这次我们同样在其基础上升级一下,画一个双轴柱状图。
像这样:
模板中最关键的部分内容:
1. 数据准备
假如我们有数据A:
A = [98.2 88.3 96.8 94.1 93.3
12.4 8.9 11.5 9.8 9.6];
第一行表示精度(左轴),第二行表示时间(右轴)。
分别构造两个矩阵bar1和bar2:
bar1 = [A(1,:)',zeros(5,1)];
bar2 = [zeros(5,1),A(2,:)'];
2. 颜色定义
一幅图,如果数据普普通通,那就得靠配色加持了。
配色是一件比较考验个人审美的工作,但至少Matlab默认的几个颜色可以先不考虑。
这里我用了之前分享的addcolor工具(Matlab绘制论文插图的270种补充颜色),选择1号和90号颜色。
C1 = addcolor(1);
C2 = addcolor(90);
3. 左轴绘制
通过yyaxis left激活左轴,然后按照之前分享的柱状图绘制方法绘制bar1:
看到了吗?
由于bar1的第二列为0,所以在图上不显示。
4. 右轴绘制
同样的,通过yyaxis right激活右轴,继续绘制bar2。
由于bar2的第一列为0,同样在图上不显示。
最后,再添加一点点细节并按要求的分辨率保存:
就得到一幅满足论文要求的双轴柱状图。
至此,折线图、柱状图、双轴折线图、双轴柱状图都有模板了。
下一篇文章会分享什么大家应该能猜到了吧……