plot.oncosimul {OncoSimulR} | R Documentation

## Plot simulated tumor progression data.

### Description

Plots data generated from the simulations, either for a single individual or for a population of individuals, with time units in the x axis and nubmer of cells in the y axis.

In "drivers" plots, by default, all clones with the same number of drivers are plotted using the same colour (but different line types), and clones with different number of drivers are plotted in different colours. Plots can alternatively display genotypes instead of drivers.

Plots available are line plots, stacked area, and stream plots.

### Usage

    ## S3 method for class 'oncosimul'
    plot(x,
                               show = "drivers",
                               type = ifelse(show == "genotypes",
                                             "stacked", "line"),
                               col = "auto",
                               log = ifelse(type == "line", "y", ""),
                               ltyClone = 2:6,
                               lwdClone = 0.9,
                               ltyDrivers = 1,
                               lwdDrivers = 3,
                               xlab = "Time units",
                               ylab = "Number of cells",
                               plotClones = TRUE,
                               plotDrivers = TRUE,
                               addtot = FALSE,
                               addtotlwd = 0.5,
                               ylim = NULL,
                               xlim = NULL,
                               thinData = FALSE,
                               thinData.keep = 0.1,
                               thinData.min = 2,
                               plotDiversity = FALSE,
                               order.method = "as.is",
                               stream.center = TRUE,
                               stream.frac.rand = 0.01,
                               stream.spar = 0.2,
                               border = NULL,
                               lwdStackedStream = 1,
                               srange = c(0.4, 1),
                               vrange = c(0.8, 1),
                               breakSortColors = "oe",
                               legend.ncols = "auto", ...)

    ## S3 method for class 'oncosimulpop'
    plot(x,
                                  ask = TRUE,
                                  show = "drivers",
                                  type = ifelse(show == "genotypes",
                                                "stacked", "line"),
                                  col = "auto",
                                  log = ifelse(type == "line", "y", ""),
                                  ltyClone = 2:6,
                                  lwdClone = 0.9,
                                  ltyDrivers = 1,
                                  lwdDrivers = 3,
                                  xlab = "Time units",
                                  ylab = "Number of cells",
                                  plotClones = TRUE,
                                  plotDrivers = TRUE,
                                  addtot = FALSE,
                                  addtotlwd = 0.5,
                                  ylim = NULL,
                                  xlim = NULL,
                                  thinData = FALSE,
                                  thinData.keep = 0.1,
                                  thinData.min = 2,
                                  plotDiversity = FALSE,
                                  order.method = "as.is",
                                  stream.center = TRUE,
                                  stream.frac.rand = 0.01,
                                  stream.spar = 0.2,
                                  border = NULL,
                                  lwdStackedStream = 1,
                                  srange = c(0.4, 1),
                                  vrange = c(0.8, 1),
                                  breakSortColors = "oe",
                                  legend.ncols = "auto",
                                  ...)

### Arguments

`x` | An object of class `oncosimul` (for `plot.oncosimul`) or `oncosimulpop` (for `plot.oncosimulpop`).
`ask` | Same meaning as in `par`.
`show` | One of "drivers" or "genotypes". If "drivers" the legend will reflect the number of drivers. If "genotypes" you will be shown genotypes. You probably want to limit "genotypes" to those cases where only a relatively small number of genotypes exist (or the plot will be an unmanageable mess). The default is "drivers".
`type` | One of "line", "stacked", "stream". If "line", you are shown lines for each genotype or clone. This means that to get an idea of the total population size you need to use `plotDrivers = TRUE` with `addtot = TRUE`, or do the visual calculation in your head. If "stacked" a stacked area plot. If "stream" a stream plot. Since these stack areas, you immediately get the total population. But that also means you cannot use `log`. The default is to use "line" for `show = "drivers"` and "stacked" for `show = "genotypes"`.
`col` | Colour of the lines/areas. For `show = "drivers"` each type of clone (where type is defined by number of drivers) has a different color. For `show = "genotypes"` color refers to genotypes. The vector is recycled as needed. The default is "auto". If you have `show == "genotypes"` we start from the "Dark2" palette from `brewer.pal` in the `RColorBrewer` package and extend the palette via `colorRampPalette`. For `show == "drivers"` and `type == "line"` we use a vector of eight colors (that are, then recycled as needed). If you use "stacked" or "stream", however, instead of "line", then we generate colors via a HSV specification that tries to: a) make it easy to differentiate between different drivers (by not having like colors for adjacent numbers of drivers); b) make it easy to have a "representative" driver color while using sligtly different colors for different clones of a driver. See the code by doing `OncoSimulR:::myhsvcols`. You can specify your own vector of colors, but it will be ignored with `show == "drivers"`.
`log` | See `log` in `plot.default`. The default is to have "y" for `type == "line"`, and that will make the y axis logarithmic. Stacked and stream area plots do not allow for logarithmic y axis (since those depend on the additivity of areas but `log(a + b) != log(a) + log(b)`).
`ltyClone` | Line type for each clone. Recycled as needed. You probably do not want to use lty=1 for any clone, to differentiate from the clone type, unless you change the setting for `ltyDrivers`.
`lwdClone` | Line width for clones.
`ltyDrivers` | Line type for the driver type.
`lwdDrivers` | Line width for the driver type.
`xlab` | Same as `xlab` in `plot.default`.
`ylab` | Same as `ylab` in `plot.default`.
`plotClones` | Should clones be plotted?
`plotDrivers` | Should clone types (which are defined by number of drivers), be plotted? (Only applies when using `show = "drivers"`).
`addtot` | If TRUE, add a line with the total populatino size.
`addtotlwd` | Line width for total population size.
`ylim` | If non NULL, limits of the y axis. Same as in `plot.default`. If NULL, the limits are calculated automatically.
`xlim` | If non NULL, limits of the x axis. Same as in `plot.default`. If NULL, the limits are calculated automatically. Using a non-NULL range smaller than the range of observed values of time can also lead to speed ups of large figures (since we trim the data).
`thinData` | If TRUE, the data plotted is a subset of the original data. The original data are "thinned" in such a way that the origin of each clone is not among the non-shown data (i.e., so that we can see when each clone/driver originates). Thinning is done to reduce the plot size and to speed up plotting. Note that thinning is carried out before dealing with the plot axis, so the actual number of points to be plotted could be a lot less (if you reduce the x-axis considerably) than those returned from the thinning. (In extreme cases this could lead to crashes when trying to use stream plots if, say, you end up plotting only three values).
`thinData.keep` | The fraction of the data to keep (actually, a lower bound on the fraction of data to keep).
`thinData.min` | Any time point for which a clone has a population size > thinData.min will be kept (i.e., will not be removed from) in the data.
`plotDiversity` | If TRUE, we also show, on top of the main figure, Shannon's diversity index (and we consider as distinct those genotypes with different order of mutations when order matters). If you set this to true, using `par(mfrow = c(2, 2))` and similar will not work (since we use `par(fig = )`) to display the diversity as the top plot).
`order.method` | For stacked and stream plots. `c("as.is", "max", "first")`. `"as.is"`: plot in order of y column; `"max"`: plot in order of when each y series reaches maximum value. `"first"`: plot in order of when each y series first value > 0.
`stream.center` | For stream plots. If TRUE, the stacked polygons will be centered so that the middle, i.e. baseline ("g0"), of the stream is approximately equal to zero. Centering is done before the addition of random wiggle to the baseline.
`stream.frac.rand` | For stream plots. Fraction of the overall data "stream" range used to define the range of random wiggle (uniform distribution) to be added to the baseline 'g0'.
`stream.spar` | Setting for smooth.spline function to make a smoothed version of baseline "g0".
`border` | For stacked and stream plots. Border colors for polygons corresponding to y columns (will recycle) (see `polygon` for details).
`lwdStackedStream` | border line width for polygons corresponding to y columns (will recycle).
`srange` | Range of values of s in the HSV specification of colors (see `col` for details. Only applies when using "stacked" or "stream" plots and `col == "auto"`.)
`vrange` | Range of values of v in the HSV specification of colors (see `col` for details.Only applies when using "stacked" or "stream" plots and `col == "auto"`. )
`breakSortColors` | How to try to minimize that similar colors be used for contiguous or nearby driver categories. The default is "oe" which resorts them in alternating way. The other two options are "distave", where we alternate after folding from the mean and "random" where the colors are randomly sorted. Only applies when using "stacked" or "stream" plots and `col == "auto"`.
`legend.ncols` | The number of columns of the legend. If `"auto"` (the default), will have one column for six or less entries, and two for more than six.
`...` | Other arguments passed to `plots`. For instance, `main`.

### Author(s)

Ramon Diaz-Uriarte. Marc Taylor for stacked and stream plots.

### See Also

`oncoSimulIndiv`

### Examples

    data(examplePosets)
    p701 <- examplePosets[["p701"]]

    ## Simulate and plot a single individual, including showing
    ## Shannon's diversity index
    b1 <- oncoSimulIndiv(p701)
    plot(b1, addtot = TRUE, plotDiversity = TRUE)

    ## A stacked area plot
    plot(b1, type = "stacked", plotDiversity = TRUE)

    ## And what if I show a stream plot?
    plot(b1, type = "stream", plotDiversity = TRUE)

    ## Simulate and plot 2 individuals
    ## (I set mc.cores = 2 to comply with --as-cran checks, but you
    ##  should either use a reasonable number for your hardware or
    ##  leave it at its default value).

    p1 <- oncoSimulPop(2, p701, mc.cores = 2)

    par(mfrow = c(1, 2))
    plot(p1, ask = FALSE)

    ## Stacked; we cannot log here, and harder to see patterns
    plot(p1, ask = FALSE, type = "stacked")

    ## Show individual genotypes and drivers for an
    ## epistasis case with at most eight genotypes

    sa <- 0.1
    sb <- -0.2
    sab <- 0.25
    sac <- -0.1
    sbc <- 0.25
    sv2 <- allFitnessEffects(epistasis = c("-A : B" = sb,
                                           "A : -B" = sa,
                                           "A : C" = sac,
                                           "A:B" = sab,
                                           "-A:B:C" = sbc),
                             geneToModule = c(
                                 "Root" = "Root",
                                 "A" = "a1, a2",
                                 "B" = "b",
                                 "C" = "c"))
    evalAllGenotypes(sv2, order = FALSE, addwt = TRUE)
    e1 <- oncoSimulIndiv(sv2, model = "McFL",
                         mu = 5e-6,
                         sampleEvery = 0.02,
                         keepEvery = 1,
                         initSize = 2000,
                         finalTime = 3000,
                         onlyCancer = FALSE)

    ## Drivers and clones
    plot(e1, show = "drivers")

    ## Make genotypes explicit
    plot(e1, show = "genotypes")

    ## Oh, but I want other colors
    plot(e1, show = "genotypes", col = rainbow(8))

    ## and actually I want a line plot
    plot(e1, show = "genotypes", type = "line")

[Package OncoSimulR version 2.20.0 Index]