R: Plot a Functional Data Object

plot.fd {fda} | R Documentation

## Plot a Functional Data Object

### Description

Functional data observations, or a derivative of them, are plotted. These may be either plotted simultaneously, as `matplot` does for multivariate data, or one by one with a mouse click to move from one plot to another. The function also accepts the other plot specification arguments that the regular `plot` does. Calling `plot` with an `fdSmooth` or an `fdPar` object plots its `fd` component.

### Usage

    ## S3 method for class 'fd'
    plot(x, y, Lfdobj=0, href=TRUE, titles=NULL,
                        xlim=NULL, ylim=NULL, xlab=NULL,
                        ylab=NULL, ask=FALSE, nx=NULL, axes=NULL, ...)
    ## S3 method for class 'fdPar'
    plot(x, y, Lfdobj=0, href=TRUE, titles=NULL,
                        xlim=NULL, ylim=NULL, xlab=NULL,
                        ylab=NULL, ask=FALSE, nx=NULL, axes=NULL, ...)
    ## S3 method for class 'fdSmooth'
    plot(x, y, Lfdobj=0, href=TRUE, titles=NULL,
                        xlim=NULL, ylim=NULL, xlab=NULL,
                        ylab=NULL, ask=FALSE, nx=NULL, axes=NULL, ...)

### Arguments

`x` | functional data object(s) to be plotted.
`y` | sequence of points at which to evaluate the functions 'x' and plot on the horizontal axis. Defaults to seq(rangex[1], rangex[2], length = nx). NOTE: This will be the values on the horizontal axis, NOT the vertical axis.
`Lfdobj` | either a nonnegative integer or a linear differential operator object. If present, the derivative or the value of applying the operator is plotted rather than the functions themselves.
`href` | a logical variable: If `TRUE`, add a horizontal reference line at 0.
`titles` | a vector of strings for identifying curves
`xlab` | a label for the horizontal axis.
`ylab` | a label for the vertical axis.
`xlim` | a vector of length 2 containing axis limits for the horizontal axis.
`ylim` | a vector of length 2 containing axis limits for the vertical axis.
`ask` | a logical value: If `TRUE`, each curve is shown separately, and the plot advances with a mouse click
`nx` | the number of points to use to define the plot. The default is usually enough, but for a highly variable function more may be required.
`axes` | Either a logical or a list or `NULL`. logical whether axes should be drawn on the plot list a list used to create custom `axes` used to create axes via `do.call(x$axes[[1]], x$axes[-1])`. The primary example of this uses `list("axesIntervals", ...)`, e.g., with `Fourier` bases to create `CanadianWeather` plots
`...` | additional plotting arguments that can be used with function `plot`

### Details

Note that for multivariate data, a suitable array must first be defined using the `par` function.

### Value

'done'

### Side Effects

a plot of the functional observations

### See Also

`lines.fd`, `plotfit.fd`

### Examples

    ##
    ## plot.fd
    ##

    daybasis65 <- create.fourier.basis(c(0, 365), 65,
                        axes=list("axesIntervals"))

    daytempfd <- with(CanadianWeather, Data2fd(day.5,
            dailyAv[,,"Temperature.C"], daybasis65))

    #  plot all the temperature functions for the monthly weather data
    plot(daytempfd, main="Temperature Functions")

    ## Not run:
    # To plot one at a time:
    # The following pauses to request page changes.
    plot(daytempfd, ask=TRUE)

    ## End(Not run)

    # test plot(fd with NA)
    daytempfd$coefs[,1] <- NA
    plot(daytempfd, main="Temperature Functions")

    ##
    ## plot.fdSmooth
    ##
    b3.4 <- create.bspline.basis(norder=3, breaks=c(0, .5, 1))
    # 4 bases, order 3 = degree 2 =
    # continuous, bounded, locally quadratic
    fdPar3 <- fdPar(b3.4, lambda=1)

    # Penalize excessive slope Lfdobj=1;
    # (Can not smooth on second derivative Lfdobj=2 at it is discontinuous.)
    fd3.4s0 <- smooth.basis(0:1, 0:1, fdPar3)

    # using plot.fd directly
    plot(fd3.4s0$fd)

    # same plot via plot.fdSmooth
    plot(fd3.4s0)
    ##
    ## with Date and POSIXct argvals
    ##
    # Date
    invasion1 <- as.Date('1775-09-04')
    invasion2 <- as.Date('1812-07-12')
    earlyUS.Canada <- c(invasion1, invasion2)
    BspInvasion <- create.bspline.basis(earlyUS.Canada)

    earlyUSyears <- seq(invasion1, invasion2, length.out=7)
    (earlyUScubic <- (as.numeric(earlyUSyears-invasion1)/365.24)^3)
    fitCubic <- smooth.basis(earlyUSyears, earlyUScubic, BspInvasion)
    plot(fitCubic)

    # POSIXct
    AmRev.ct <- as.POSIXct1970(c('1776-07-04', '1789-04-30'))
    BspRev.ct <- create.bspline.basis(AmRev.ct)
    AmRevYrs.ct <- seq(AmRev.ct[1], AmRev.ct[2], length.out=14)
    (AmRevLin.ct <- as.numeric(AmRevYrs.ct-AmRev.ct[2]))
    fitLin.ct <- smooth.basis(AmRevYrs.ct, AmRevLin.ct, BspRev.ct)
    plot(fitLin.ct)

[Package fda version 2.4.8 Index]