"myspecplot" <- function(x,spans=NULL,taper=0,ci=TRUE,demean=FALSE,detrend=FALSE,dB=TRUE,poly=FALSE,cicol=gray(.2),polcol=gray(.95),labelspan=4,npeaks=5,xlim=0,xlab="Freq",ylab="Amp (dB)") { if(frequency(x)) freqx<-frequency(x) else freqx<-1 spec <- spec.pgram(x,plot = F,spans=spans,taper=taper,detrend=detrend,demean=demean) if(dB){ s<-function(x) 10*log10(x) } else s<-function(x) x sd1<-s(spec$df/qchisq(df = spec$df, 0.97499999999999998)) sd2<-s(spec$df/qchisq(df = spec$df, 0.025000000000000001)) if(xlim==0) xlim<-range(spec$freq) plot(spec$freq,s(spec$spec),xlim=xlim, ylim = range(s(spec$spec) + sd1, s(spec$spec) + sd2),type="n",axes=FALSE,xlab=xlab,ylab=ylab) axis(1) axis(2) xlab<-round((freqx/spec$freq)/freqx,digits=1) if(poly){ rect(xleft=min(spec$freq),xright=max(spec$freq), ybottom=mean(s(spec$spec))+sd1,ytop=mean(s(spec$spec))+sd2, col=polcol,border=NULL) } if(!poly){ abline(mean(s(spec$spec)), 0, col = 2) abline(mean(s(spec$spec)) + sd1, 0, col = 2, lty = 2) abline(mean(s(spec$spec)) + sd2, 0, col = 2, lty = 2) } lines(spec$freq, s(spec$spec)) if(ci){ lines(spec$freq, s(spec$spec) + sd1, lty = 1,col=cicol) lines(spec$freq, s(spec$spec) + sd2, lty = 1,col=cicol) } if(labelspan!=0){ peakloc<-mypeaks3(s(spec$spec),span=labelspan,npeaks=npeaks) peaklab<-round((freqx/spec$freq[peakloc])/freqx,digits=1) text(spec$freq[peakloc],s(spec$spec[peakloc]),labels=peaklab,offset=0,adj=c(.5,1)) } }