tests/testthat/test_batchPlotGroups.R

library("plotteR")
library("grDevices")
context("batchPlot.groups")

test_that("Test batch-plotting of groups", {

  graphics.off();

  # create destination file
  dest <- tempfile(pattern="plot-test", fileext=".pdf");
  expect_false(file.exists(dest));

  pdf(dest, width=6, height=3);

  # set a random seed for replicability
  set.seed(2677);

  # the three base functions with the mean parameter values
  f <- list(
    list(f=function(x, par) par[1] + par[2]*x + par[3]*x*x + par[4]*x*x*x,
         m=c(1, -0.2, 0.75, -0.3)),
    list(f = function(x, par) par[1] * exp(par[2] - x),
         m=c(0.1, 3)),
    list(f=function(x, par) par[1] + par[2]*sin(par[3]*x),
         m=c(0, 1, 3)));

  # create the three example data sets
  examples <- lapply(X=f, FUN=function(example) {
    # for each example function, plot 4 to 50 instances
    lapply(seq_len(runif(n=1, min=4, max=50)),
           # for each instance
           FUN=function(i) {
             # randomly choose the x-coordinates
             x <- runif(n=as.integer(round(runif(n=1, min=10, max=200))),
                        min=0, max=3);
             m <- example$m;
             # pick parameters which are normally distributed around the suggestion
             par <- rnorm(n=length(m), mean=m, s=0.1*abs(m));
             # and construct a function
             fff <- function(x) example$f(x, par);
             # and pass this function as result example together with the x values
             list(x=x, f=fff)
           })
  });

  # plot the original data
  batchPlot.groups(examples,
                   names=c("f1", "f2", "f3"),
                   main="Several Groups of Functions",
                   plotXY=FALSE, plotXF=TRUE,
                   legend=list(x="bottom", horiz=TRUE));


  dev.off();

  expect_true(file.exists(dest));
  expect_gt(file.size(dest), 100L);

  # delete temp file
  unlink(dest);
})
thomasWeise/plotteR documentation built on May 29, 2019, 5:41 a.m.