之前在学习ggplot的时候,一直存在着一个困惑。
就是这个函数是否允许两个做出来的两个相关图表重叠嵌套(也就是在一个大图(主图)的边缘位置,放置另一个缩小版的小图)。
这个想法很奇葩,本来想着没啥希望,鉴于该包的开发者那犀利的审美观,估计也不能允许这种情况的发生。
不过最近浏览一位大神的博客,真的有这种情况的解决措施,喜出望外,赶紧在这里分享给大家。
不过他的处理方式不是通过ggplot的内置函数,而是通过grid包中的viewport函数来实现的:
以下是具体的实现步骤:
加载包:
|
|
加载并预览数据集:
这里我们还是使用关于钻石的那个数据集(之前的图表案例很多都是使用该数据集)
制作复合图的主图:
|
|
以上函数可以制作出以carat和price为主要对应关系的散点图,同时分类变量cut通过颜色映射进行区分。最后调整了图例位置和图表背景。
设定附图长宽及分布精确位置:
|
|
制作附图:
|
|
因为附图要放置在主图边缘并且缩放很大比例,为了防止其背景和网格线系统遮挡主图的重要信息,对其主题元素进行了大量的简化。
将主图与附图合成一并显示:
|
|
将以上代码打包组合:
|
|
其实仔细看这种做法,里面也不外乎图层叠加,先做出主图,然后通过viewport函数将附图缩小并叠加到主图上,不过这种方式用来展示一些需要多角度透视的数据分布问题还是很合适的,而且因为是依赖于不同的包,所有主图与附图之间没有严格的类型限制,你所需要做的只是调整好两个图表的位置与大小,别让彼此相互遮挡掩盖重要信息就OK了。
下面我将附图的类型更换为堆积直方图大家看下效果:
联系方式:
wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
qq交流群:[魔方学院]298236508
个人简介:
杜雨
财经专业研究僧;
伪数据可视化达人;
文科背景的编程小白;
喜欢研究商务图表与地理信息数据可视化,爱倒腾PowerBI、SAP DashBoard、Tableau、R ggplot2、Think-cell chart等诸如此类的数据可视化软件,创建并运营微信公众号“数据小魔方”。
Mail:578708965@qq.com
备注信息:
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。