R语言 | 图像嵌套的实现
Posted 生物空间站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言 | 图像嵌套的实现相关的知识,希望对你有一定的参考价值。
图层叠加
在进行数据可视化时,面对越来越复杂的数据形式和结果可视化需求,我们经常需要在一张图中通过多种方式对数据进行展示,比如同时使用散点图或箱线图,又或者在散点图的基础上添加趋势线等等。
这些需求在R语言的数据可视化中通常是通过不同图层的叠加来实现,ggplot2的绘图语法就是以图层概念为核心建立的,常规的图层叠加通过ggolot2包很容易实现。
在基于base的R语言可视化中,也将绘图函数分为高级函数和低级函数,例如plot函数为高级函数,而points和lines等函数为低级函数,低级做图函数可以在高级做图函数做的图上随意添加。
如果要求两个或者多个高级做图函数画在同一个图上,而且要求重叠的话,则可以采用par(new=TRUE)函数,在每次使用新的高级做图函数之前加上该语句。
需要注意的是坐标要处理好,因为这样做实际上是把多张图重叠起来,如果多张图的坐标不统一,则会出现坐标混乱的情况。
此外,有些做图函数本身就有这个功能,如matplot()和hist()函数。
举个例子,使用mtcars作为示例数据,现在要同时使用散点图和箱线图来展示不同cyl条件下mpg的数值分布。
首先使用ggplot2方法。
data(mtcars)library(ggplot2)
ggplot(mtcars,aes(cyl,mpg,group= cyl)) +
geom_boxplot() +
geom_point()
接下来使用base的方法。
mtcars$cyl <- as.factor(mtcars$cyl)
boxplot(mpg~cyl,data = mtcars)
points(mpg~cyl,data = mtcars)
图像嵌套
再来举个例子说一下图像嵌套,比方说在上文的图像基础上,还想要在图像中使用直方图展示一下mpg的数据分布。
如果此时直接添加直方图。
mtcars$cyl <- as.factor(mtcars$cyl)
boxplot(mpg~cyl,data = mtcars)
points(mpg~cyl,data = mtcars)
par(new = TRUE)
hist(mtcars$mpg)
可以看到此时图像出现的重叠覆盖,我们需要把直方图放到图中红框的空白位置才行,这时就是图像嵌套。
在基于base的R语言绘图中,里需要在par函数中使用fig参数来指定图像嵌套的位置。
使用fig参数时,需要把画布理解成左下角为坐标(0,0),右上角为(1,1)的一个坐标系。
通过fig=c(x1,x2,y1,y2)来设置该参,x1<x2,y1<y2,x1,y1定位绘图区的左下角,x2,y2定位绘图区的右上角。
使用new=TRUE参数来确认是否在原画布上继续画,还重新在一张新画布上开始画。
mtcars$cyl <- as.factor(mtcars$cyl)
boxplot(mpg~cyl,data = mtcars)
points(mpg~cyl,data = mtcars)
par(fig = c(0.5,0.9,0.5,0.9),new = TRUE)
hist(mtcars$mpg,main = "")
可以看到此时的图像就基本满足了要求。
本文只介绍了基于base的图像嵌套方法,对于ggplot2的图像嵌套我也不会,等以后研究明白了再分享给大家~
以上是关于R语言 | 图像嵌套的实现的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将表格嵌套在可视化图像中
R语言ggplot2可视化:使用purrr包的map函数基于嵌套的dataframe数据绘制多个可视化图像(包含3个子图)
R语言ggplot2可视化:使用purrr包的map函数基于嵌套的dataframe数据绘制多个可视化图像(包含2个子图)
R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将多个可视化结论嵌套起来输出(ggarrange组合ggarrange组合后的图像)