      subroutine mulfdr_elvis(
     >   F,NF1,X1,NX1,X2,NX2,ZW,
     >   ISELX,ISELF,NSEL,IAXSEL,
     >   FUNS,XUNS,
     >   MNLAB,KYLAB,LBSEL,tshift)
C
C  interface (almost) identical to trgraf/mulfdr
C  make ELVIS x-y multiplot.
C
      implicit NONE
C
C  the rest are as in mulfdr.for
C
      integer nf1,nx1,nx2,nsel,iselx,iaxsel,iwarn
      REAL F(NF1,NX2),X1(NX1),X2(NX2),ZW(NX2)
      INTEGER ISELF(NSEL)
      CHARACTER*(*) MNLAB(3)
      CHARACTER*(*) KYLAB(5)
      CHARACTER*(*) LBSEL(NSEL),XUNS,FUNS
      character*12 ztshif
      real tshift(nsel)  ! time shift informaition add to label if non-zero
C
C--------------------------------------------------------
C  real buffers
C
      real, dimension(:,:), allocatable :: fmultr4
      real, dimension(:), allocatable :: xmultr4
      real, dimension(:), allocatable :: fx
C
      character*64 wname
      character*40 gname
      integer is,if,ns,npts
C
C--------------------------------------------------------
C  window name
      call trgraf_wname_get(wname)
      call trgraf_gname_get(gname)
C  start data collection for ElVis display
      call trgraf_elvis_start(wname,gname)
C  label info
      call trgraf_elvis_labelxy(MNLAB(3),xuns,funs)
      call trgraf_elvis_addlabel(MNLAB(1),iwarn)
      call trgraf_elvis_addlabel(MNLAB(2),iwarn)
C
      if(iselx.eq.1) then
         npts = nx1
         allocate(xmultr4(nx1),fmultr4(nx1,nsel))
         xmultr4=x1
         do is=1,nsel
            if=iself(is)
            fmultr4(1:nx1,is)=f(1:nx1,if)
         enddo
      else
         npts = nx2
         allocate(xmultr4(nx2),fmultr4(nx2,nsel))
         xmultr4=x2
         do is=1,nsel
            if=iself(is)
            fmultr4(1:nx2,is)=f(if,1:nx2)
         enddo
      endif
C
C  transfer multiple datasets
      allocate(fx(npts))
C
      do ns=1,nsel
         do is=1,npts
            fx(is) = fmultr4(is,ns)
         enddo
         if(tshift(ns).eq.0.0) then
            call trgraf_elvis_xyadd(xmultr4,fx,npts,1,lbsel(ns))
         else
            write(ztshif(1:11),'(1pe11.4)') tshift(ns)
            ztshif(12:12)='s'
            if(tshift(ns).gt.0.0) ztshif(1:1)='+'
            call trgraf_elvis_xyadd(xmultr4,fx,npts,1,
     >           trim(lbsel(ns))//ztshif)
         endif
      enddo
C
C  transfer key labels
C
      do is=1,5
         call trgraf_elvis_addkylab(kylab(is),iwarn)
      enddo
C
      deallocate(fmultr4,xmultr4,fx)
C
C  now make the ElVis plot
C
      call mulfdraw_elvis
C
      return
      end
