在使用R语言进行数据可视化的时候,常常需要将多张统计图表绘制在同一张图上面,从而更高效地传递信息,下面我们就来一起看看具体如何实现。

一、使用R语言自带的函数绘制的图像

R语言本身就已经内置了许多绘图函数,能够满足较为基本的绘图需求,例如hist()boxplot()spineplot()等等。如果我们想要将使用这些函数绘制的图像汇总在一张图中,需要使用split.screen()screen()函数,具体方法如下:

1. 步骤一:分割屏幕split.screen()

顾名思义,split.screen()函数是用于分割屏幕的,它需要传入一个形似c(nrow, ncol)的参数,意为将屏幕分割为nrow行,ncol列;分割完成后函数会返回一个整数(integer)型向量,长度等于nrow * ncol,即为分割之后屏幕的每一个部分对应的“编号”。这些“编号”将用于传入screen()函数,进行后续的绘图工作。

2. 步骤二:指定绘图位置screen()

分隔完屏幕之后,我们需要首先指定一张子图的位置,使用screen()函数,传入之前分割屏幕时返回的“编号”, 便完成了指定。

3. 步骤三:绘图

完成指定子图位置之后,便可以进行正常的绘图工作,使用hist()boxplot()spineplot()等函数进行绘图,注意每绘制完一张图就需要使用screen()来更改绘图的位置。下面我们来看一个实例:

这里我们使用R语言内置的数据集AirPassengerscars来进行演示:



# 分割屏幕
> split.screen(c(2, 1))
> [1] 1 2

# 绘制第一个图
> screen(1)
> plot(cars)

# 绘制第二个图
> screen(2)
> plot(AirPassengers)

# 结束绘图
> dev.off()





R语言 饼图 叠加地图 r语言多图叠加_c++绘制函数图像


代码运行结果

二、使用ggplot2绘制的图像

ggplot2是非常流行的R语言可视化包,功能极为强大,能够绘制众多复杂的统计图表。在同一张图中显示多张ggplot2图像同样也需要借助第三方的R包——ggpubrggpubr包中的ggarrange()可以方便地将多张图整合在一张上面。其常用的参数如下:ggarrange(..., ncol = NULL, nrow = NULL)

其中...是按顺序依次列出的需要整合的图表, ncol是列数,nrow是行数。可以看出,相比于R语言自带函数绘制的图像,在ggarrange()的帮助下,ggplot2绘制的图像整合起来更加方便,下面我们看一个实例,依然使用R语言内置的数据集cars


# 绘制第一个图像
> p1 = ggplot(cars, aes(x = speed, y = dist)) +
    geom_line(size = 1) +
    labs(x = "speed", y = 'dist')

# 绘制第二个图像
> p2 = ggplot(cars, mapping = aes(x = speed, y = dist)) +
    geom_point(size = 1, col = 'darker') + 
    labs(x = "speed", y = 'dist') 

# 整合两张图
> ggarrange(p1, p2, ncol = 2, nrow = 1)


R语言 饼图 叠加地图 r语言多图叠加_R语言 饼图 叠加地图_02

代码运行结果