R语言绘图多图叠加和图形分页.docx
- 文档编号:24168955
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:14
- 大小:738.08KB
R语言绘图多图叠加和图形分页.docx
《R语言绘图多图叠加和图形分页.docx》由会员分享,可在线阅读,更多相关《R语言绘图多图叠加和图形分页.docx(14页珍藏版)》请在冰豆网上搜索。
R语言绘图多图叠加和图形分页
R绘图课程:
多图叠加与图形分页
gaom
在我们用R画图的时候常常碰到一种问题,就是我们简简单单一个对象的图无法达到我们想要的结果。
可能我们是一个对象但有多种展示,需要把多个图放在一起。
也可能我们要画的是多个对象,但每个对象的图其实都是并行的。
前面一种情况我理解为是多图叠加,即需要多张不同的图拼凑到一张图中。
后面的情况我理解为是图形分页,即把类似的图形有序的排列展示给大家看。
今天我们讨论的主题就是如何去解决上述的两种情况。
首先,我们针对第一种情况。
其实第一种情况我们还是要划分一下。
多图叠加,其中的叠是指我们的绘图中两张或多张不同的图整合到一种图中,共用一个坐标轴。
比如一张柱状图,一张曲线图合并到一张图中。
而其中的加则是指我们想合并的图之间无法共用坐标轴,我们只能在一张图中划分不同的区域加需要的多张图放置进去。
光说不练假把式,今天我们就找几个实例展示一下,让大家看下我们如果处理这种常见的问题。
library("ggplot2")#这次主要是用ggplot来处理
datav-read.table(file="C:
/Users/gaom/Desktop/R语言绘图:
多图叠加和图形
分页/test_data2.txt",header=F,stringsAsFactors=F,sep="\t")#因为文件中有
数字也有字符,所以建议加上stringsAsFactors=F。
head(data)
##V1V2V3V4
##110.154150520.7645350A
##220.092789400.7763482A
##330.016661040.8422627A
##440.015193190.7630589A
##550.166050950.8263706A
##660.138921520.7597543A
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
dataSV1
data$V4
对应的柱状图了,下面再根据第一列和第三列画点线图
p2v-ggplot(data)+geom_line(aes(x=data$V1,y=data$V2,colour=cale_x_continuous(breaks=1:
12)#这里可以注意跟柱状图不一样了,
r,不是fillo
p2
上面已经有
data$V4))+s用的是colou
0.4-
o.o-
123+5C789101112
data$V1
分开的两张图我们都做好了,下面就是叠加了。
首先我们看到这里的数据其实都是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_l
ine(aes(x=data$V1,y=data$V2,colour=data$V4))+scale_x_continuous(break
s=1:
12)#为了能看到线图,所以这里把填充颜色改成了白色,这里大家注意一下fill
的位置,跟之前的fill运用有些区别
p3
o.a-
06-
04-
02-
O.Q-
45e769101112
data$V1
dataSV4
—A
—B
——c
D
这里说完了叠,再说说加。
下面我们就简单的把上面两张图加到一张图中
library("gridExtra")
grid.arrange(p1,p2,ncol=2,widths=c(1,1))#widths表示横向两图的比例
data$V1
dalaSV4
岛—B——C
D
0鬲冷P
grid.arrange(p1,p2,p1,p2,ncol=2,nrow=2)#ncol禾口nrow表示图形摆放方式
-J
dataSV!
dataSV4
A
日
C
D
8
J
0x-
0.2-
0.0"IiIIiInliIIhI1234567891012
dataSV4
dataSVI
grid.arrange(p1,p2,p1,p2,ncol=2,layout_matrix=cbind(c(1,1,1),c(2,3,
4)))#layout_matrix中的1,2,3,4分别对应前面四个对象
dataSV4
06
06
04
02
00
Iii>IiiiIIRIi
S
—c
——D
dataSV4
□a
0
c
D
况,相信大家还会碰到另外一种,
dataSV4
—A
除了上述情比如上述四个图拼在一起。
而我们只有三个图,
08-
04・
0.3
02
01-
1234567931012
data$V1
IIIIIIIIIIIII
1234567091012dataSV!
06-
」J「
2
1234567891012
dataSV!
12345678J1012dataSV!
可能右上角或左上角是空白的。
这个怎么办呢?
kong<-ggplot()+geom_blank(aes(1,1))+
theme(plot.background=element_blank(),panel.grid.major=element_bl
ank(),
panel.grid.minor=element_blank(),panel.border=element_blank(),
panel.background=element_blank(),axis.title.x=element_blank(),
axis.title.y=element_blank(),axis.text.x=element_blank(),
axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.line=element_blank())#这里其实就是建立了一个完全空白的图片
grid.arrange(p2,kong,p1,p2,ncol=2,nrow=2,widths=c(2,1),heights=c
(1,2))
EASE冷P
oo-
dataSV4
0.3
02
01-
o.o-
吕
—c
D
data$V1
0.8-
06-
.4-
oz-
123456789101112
data$V1
B
D
data$V1
dataSV4
—岛
—B
——G
D
3常肓p
上述了这些就是一般常见的图层叠加了。
当然,如果大家还想发散的话,可以再参考一些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
0642o
咄
dstaSV4
B
11
A
m
c
D
1IIIIIIIIII
1234567891012
data$V1
5
B
86420
86420
1234567891012
10
1234557091012
12
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)#这是根据分组来分页的
DD
0
n
D
n
a
n
D
n
o
0
□
□
D
D
□
D
D
□
D
0
D
n
iiii11ii11
dataSV4
A
B
C
D
IIIiI■II
1234557901€12
123^789t®1t2
data$V1
ni
123456759M2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 绘图 叠加 图形 分页