R语言绘图:多图叠加和图形分页讲课讲稿

更新时间:2023-04-14 19:10:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

R语言绘图:多图叠加和图形分页

精品文档

R绘图课程:多图叠加与图形分页

gaom

在我们用R画图的时候常常碰到一种问题,就是我们简简单单一个对象的图无法达到我们想要的结果。可能我们是一个对象但有多种展示,需要把多个图放在一起。也可能我们要画的是多个对象,但每个对象的图其实都是并行的。前面一种情况我理解为是多图叠加,即需要多张不同的图拼凑到一张图中。后面的情况我理解为是图形分页,即把类似的图形有序的排列展示给大家看。今天我们讨论的主题就是如何去解决上述的两种情况。

首先,我们针对第一种情况。其实第一种情况我们还是要划分一下。多图叠加,其中的叠是指我们的绘图中两张或多张不同的图整合到一种图中,共用一个坐标轴。比如一张柱状图,一张曲线图合并到一张图中。而其中的加则是指我们想合并的图之间无法共用坐标轴,我们只能在一张图中划分不同的区域加需要的多张图放置进去。

光说不练假把式,今天我们就找几个实例展示一下,让大家看下我们如果处理这种常见的问题。

library("ggplot2")#这次主要是用ggplot来处理

data<-read.table(file ="C:/Users/gaom/Desktop/R语言绘图:多图叠加和图形分页/test_data2.txt",header=F,stringsAsFactors=F,sep ="\t")#因为文件中有数字也有字符,所以建议加上stringsAsFactors=F。

head(data)

## V1 V2 V3 V4

## 1 1 0.15415052 0.7645350 A

## 2 2 0.09278940 0.7763482 A

## 3 3 0.01666104 0.8422627 A

## 4 4 0.01519319 0.7630589 A

## 5 5 0.16605095 0.8263706 A

## 6 6 0.13892152 0.7597543 A

dim(data)

## [1] 48 4

收集于网络,如有侵权请联系管理员删除

精品文档

第一列是染色体名,第二列和第三列分别是两种计算结果,具体意义暂时不予理会。第四列是染色体的区域,100000表示1到100000,200000表示100001到200000。我们大致知道数据结构即可。

下面我们开始画图

p1<-ggplot(data)+geom_bar(aes(x=data$V1,y=data$V3,fill = data$V4,group = data$V4),,position ="dodge",stat ="identity",colour ="black")+scal e_x_continuous(breaks =1:12)#加上position="dodge"后会每条染色体分成四个柱子,加上colour = "black",则每个柱子的边框为黑色。

p1

上面已经有对应的柱状图了,下面再根据第一列和第三列画点线图。

p2<-ggplot(data)+geom_line(aes(x=data$V1,y=data$V2,colour = data$V4))+s cale_x_continuous(breaks =1:12)#这里可以注意跟柱状图不一样了,用的是colou r,不是fill。

p2

收集于网络,如有侵权请联系管理员删除

精品文档

分开的两张图我们都做好了,下面就是叠加了。首先我们看到这里的数据其实都是data,换句话说就是他们其实可以共用坐标轴的。所以这种情况在ggplot当中叠起来很容易。

data[,5]="white"

p3<-ggplot(data)+geom_bar(aes(x=data$V1,y=data$V3,group = data$V4),fill = data$V5,position ="dodge",stat ="identity",colour ="black")+geom_ line(aes(x=data$V1,y=data$V2,colour = data$V4))+scale_x_continuous(brea ks =1:12)#为了能看到线图,所以这里把填充颜色改成了白色,这里大家注意一下fil l的位置,跟之前的fill运用有些区别

p3

收集于网络,如有侵权请联系管理员删除

精品文档

这里说完了叠,再说说加。下面我们就简单的把上面两张图加到一张图中。library("gridExtra")

grid.arrange(p1,p2,ncol =2,widths=c(1,1))#widths表示横向两图的比例

收集于网络,如有侵权请联系管理员删除

精品文档

grid.arrange(p1,p2,nrow =2,heights =c(1,2))#heights表示两图纵向的比例

grid.arrange(p1,p2,p1,p2,ncol =2,nrow =2)#ncol和nrow表示图形摆放方式

收集于网络,如有侵权请联系管理员删除

本文来源:https://www.bwwdw.com/article/q7cq.html

Top