使用R快速绘制ERP图形

将实验结果呈现成高质量的图,对于一篇文章能起到锦上添花的作用。但是,很多时候为了一些细节,往往要耗费很多精力做重复的工作,还容易出错。因此,使用可以复用的代码来完成这一工作,会大大提高效率。

假如我们将EEG数据的兴趣脑区划分为了6个区域,现在需要将6个区域的ERP波形图绘制在一张图中,并标注出统计显著的时间窗口,可在R中采用如下代码:(基于erpR这个包)

library(erpR)
jpeg("/yourpath/type4.jpeg",width=4500*3,height=2700*3,res=300*3) #分辨率是300
opar <- par(mfrow=c(2,3),mar=c(2,2,2,2),cex.main=3,family='Times New Roman') #2*3的六个作图区域,设置字体,字号

erp(FL_1, smo=0.5,main='Left-Anterior', x0=F,col="red", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600), ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(FL_2, smo=0.5, x0=F,col="blue", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600), ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)

erp(FC_1, smo=0.5, x0=F,main='Mid-Anterior',col="red", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(FC_2, smo=0.5, x0=F,col="blue", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
#这个包的时间刻度略有问题,貌似是每加10,代表加20,估计与采样率有关
rect(220, -3, 250, 3, col=rgb(0.5,0.5,0.5,0.2),border = NA)
erp(FR_1, smo=0.5, main='Right-Anterior',x0=F,col="red", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(FR_2, smo=0.5, col="blue", x0=F,startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
rect(220, -3, 250, 3, col=rgb(0.5,0.5,0.5,0.2),border = NA)

erp(PL_1, smo=0.5, main='Left-Posterior',x0=F,col="red", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600), ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(PL_2, smo=0.5, col="blue", x0=F,startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600), ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)

erp(PC_1, smo=0.5, main='Mid-Posterior',x0=F,col="red", startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(PC_2, smo=0.5, col="blue", x0=F,startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)

erp(PR_1, smo=0.5, main='Right-Posterior',col="red", x0=F,startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)
erp.add(PR_2, smo=0.5, col="blue",x0=F, startmsec=-200, endmsec=800,interval=c(-200,600),xlim = c(-200, 600),  ylim=c(4,-3),x.pos=0,y.pos=0,x.tick=seq(-200,600,100),y.tick=seq(4,-3,-1),frame.plot=F,x.labels=NA,y.labels=NA)

dev.off()

以后只需要把数据定义好,运行这段代码就可以自动生成波形图。需要修改的地方只有显著性标记那里

猜你喜欢

转载自blog.csdn.net/muxiaosa/article/details/80869836