R语言绘图 多图叠加和图形分.docx
- 文档编号:27903953
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:9
- 大小:89.69KB
R语言绘图 多图叠加和图形分.docx
《R语言绘图 多图叠加和图形分.docx》由会员分享,可在线阅读,更多相关《R语言绘图 多图叠加和图形分.docx(9页珍藏版)》请在冰豆网上搜索。
R语言绘图多图叠加和图形分
R绘图课程:
多图叠加与图形分页
gaom
在我们用R画图的时候常常碰到一种问题,就是我们简简单单一个对象的图无法达到我们想要的结果。
可能我们是一个对象但有多种展示,需要把多个图放在一起。
也可能我们要画的是多个对象,但每个对象的图其实都是并行的。
前面一种情况我理解为是多图叠加,即需要多张不同的图拼凑到一张图中。
后面的情况我理解为是图形分页,即把类似的图形有序的排列展示给大家看。
今天我们讨论的主题就是如何去解决上述的两种情况。
首先,我们针对第一种情况。
其实第一种情况我们还是要划分一下。
多图叠加,其中的叠是指我们的绘图中两张或多张不同的图整合到一种图中,共用一个坐标轴。
比如一张柱状图,一张曲线图合并到一张图中。
而其中的加则是指我们想合并的图之间无法共用坐标轴,我们只能在一张图中划分不同的区域加需要的多张图放置进去。
光说不练假把式,今天我们就找几个实例展示一下,让大家看下我们如果处理这种常见的问题。
library("ggplot2")#这次主要是用ggplot来处理
data<(file="C:
/Users/gaom/Desktop/R语言绘图:
多图叠加和图形分页/",header=F,stringsAsFactors=F,sep="\t")#因为文件中有数字也有字符,所以建议加上stringsAsFactors=F。
head(data)
##V1V2V3V4
##110.A
##22A
##33A
##44A
##550.A
##660.A
dim(data)
##[1]484
第一列是染色体名,第二列和第三列分别是两种计算结果,具体意义暂时不予理会。
第四列是染色体的区域,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")+scale_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))+scale_x_continuous(breaks=1:
12)#这里可以注意跟柱状图不一样了,用的是colour,不是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(breaks=1:
12)#为了能看到线图,所以这里把填充颜色改成了白色,这里大家注意一下fill的位置,跟之前的fill运用有些区别
p3
这里说完了叠,再说说加。
下面我们就简单的把上面两张图加到一张图中。
library("gridExtra")
(p1,p2,ncol=2,widths=c(1,1))#widths表示横向两图的比例
(p1,p2,nrow=2,heights=c(1,2))#heights表示两图纵向的比例
(p1,p2,p1,p2,ncol=2,nrow=2)#ncol和nrow表示图形摆放方式
(p1,p2,p1,p2,ncol=2,layout_matrix=cbind(c(1,1,1),c(2,3,4)))#layout_matrix中的1,2,3,4分别对应前面四个对象
除了上述情况,相信大家还会碰到另外一种,比如上述四个图拼在一起。
而我们只有三个图,可能右上角或左上角是空白的。
这个怎么办呢?
kong<-ggplot()+geom_blank(aes(1,1))+
theme=element_blank(),=element_blank(),
=element_blank(),=element_blank(),
=element_blank(),=element_blank(),
=element_blank(),=element_blank(),
=element_blank(),=element_blank(),
=element_blank())#这里其实就是建立了一个完全空白的图片
(p2,kong,p1,p2,ncol=2,nrow=2,widths=c(2,1),heights=c(1,2))
上述了这些就是一般常见的图层叠加了。
当然,如果大家还想发散的话,可以再参考一些ggExtra这个包,你会发现更多乐趣。
好了,除了刚才的叠加,下面我们再说说分页。
这方面在ggplot中就显得很容易了。
p4<-ggplot(data)+geom_bar(aes(x=data$V1,y=data$V3,fill=data$V4,group=data$V4),,position="dodge",stat="identity",colour="black")+scale_x_continuous(breaks=1:
12)+facet_grid(~V4)#这是根据分组来分页的
p4
p5<-ggplot(data)+geom_bar(aes(x=data$V1,y=data$V3,fill=data$V4,group=data$V4),,position="dodge",stat="identity",colour="black")+scale_x_continuous(breaks=1:
12)+facet_wrap(~V1,ncol=3)#这个是根据染色体的,同时也能通过ncol和nrow来调控布局
p5
facet_grid相对facet_wrap而言可以应用多个标准进行分页。
但从布局角度个人觉得facet_wrap更好。
p6<-ggplot(data)+geom_bar(aes(x=data$V1,y=data$V3,fill=data$V4,group=data$V4),,position="dodge",stat="identity",colour="black")+scale_x_continuous(breaks=1:
12)+facet_grid(V1~V4)#这是根据分组来分页的
p6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- R语言绘图 多图叠加和图形分 语言 绘图 叠加 图形