双坐标轴图是一种组合图表,一般将两种不同类型图表组合在同一个“画布”上,如柱状图和折线图的组合;当然也可将类型相同而数据单位不同的图表组合在一起。双坐标轴图中最难画的应该是“柱状图”与“柱状图”的组合,因为会遇到同一刻度对应“柱子”与“柱子”完全互相重叠的问题。绘制双坐标轴图的难点是让另一组数据与次坐标轴“联动”,便于对坐标范围(Scale)调整。
今天就以“柱状图”与“柱状图”组合绘图为例子,介绍解决上述两个问题的技巧,以及“空位”和“图层”(Layer)的用法。学会了之后,绘制其他类型组合图就有“一览众山小”的感觉了。
数据如下如,已发表SCI文章中不同OS tools的引用次数和比例,目标是绘制左边坐标轴显示引用数,右边坐标轴显示比例的柱状图。
通过plot\Multi-Y\Double-Y,如下图,进入绘制双坐标轴图数据选择页面。在这里我困惑了一会儿,为什么没有双柱状图的?后来一想,示例而已。
进入数据选择窗口(如下图),左侧的Plot Type中把默认的Line+Symbol (点线图)改为Column/Bar (柱状图),给Layer1选择要显示的数据,X轴数据选A列(对应tools),Y轴数据选B、C列,点击Add按钮,将数据载入到Layer1;接着,点选Layer2,重复上面步骤,给Layer2载入与Layer1相同的数据。
接下来,就要选择哪个坐标轴对应那列数据了。点选Layer1,在下方的Plot List中,取消“Rate”(Y)数据Show的勾选(隐藏Rate列数据,只显示Number列的数据);同样的操作,点选Layer2,隐藏Number列数据。这样Layer1(对应左侧Y轴)只显示Number列的数据,而Layer2(对应右侧Y轴)只显示Rate列的数据。
你可能会问,为什么不在Add数据的时候只选1列数据,这样就不需要隐藏另一列了?
这里这样做是有原因的,如果是点线图和点线图的组合这样做没问题,但对于柱状图和柱状图的组合就会出现柱子“重叠”的现象。这里数据的“不显示”和没有数据是完全不同的,“不显示”的数据仍占着“座位”,通过引入“空位”数据使不同分组的数据分列刻度两侧,这就是“空位”的用法(如下图)。
为什么会出现柱子“重叠”呢?这就是“图层”的问题了。
类似Photoshop中的图层,图层就是一张“透明的画布”,用于分开储存图形信息,以便独立修改其中一个图层的图形而其他图形不受影响。所有的绘图软件几乎都有图层,如ggplot2通过“+”叠加图层,PPT,Excel等每个图形都可视作位于一个图层。图层之间都有上下叠合关系,如PPT图形操作中类似置于底层或下一层的操作。
Origin中Graph窗口左上角的灰色方框中就是图层的编号,表示当前的图由两个图层叠合而成。右击编号对当前图层做相应操作,如下图中的对不同图层的隐藏效果。
关于图例的黑色边框、阴影,可右击图例,通过Properties进入图例窗口,在Frame中将Border(边框)和Shadow(阴影)的颜色改为“None”。
同样,右击横轴标签,菜单中选择 Tick Labels 进入坐标轴设置窗口,在 Format 下将 Rotate(deg.)设为45度,使横轴标签旋转45度。接着更改柱子的颜色和标签字体的大小等,图片导出等,可参考《如何用Origin画“箱子和胡子”图?》和《柱状图的坐标轴如何“中断”?》这两篇Origin教程,方法一样,这里不再赘述。最终的绘制结果如下:
那么有没有快速的画图方法呢?
有,最快的绘制方法是在启动Origin后的引导窗口,找双坐标轴的Samples双击点进去,直接替换示例文件的数据,稍作修改即可出图。
小结
本文主要是利用图层来实现两组数据与两个坐标轴分开联动的,图层的用法是本文的重点。需要注意的是,双坐标轴图的图例一定要清楚明了,不然读图比较困难,某种程度上,这也是ggplot2不支持绘制双坐标轴图的主要原因。
今天的分享就到这里啦~
联系客服