diff --git a/tests/test_plotting_functions.R b/tests/test_plotting_functions.R new file mode 100644 index 0000000..5f8d295 --- /dev/null +++ b/tests/test_plotting_functions.R @@ -0,0 +1,194 @@ +### TEST-SUITE ##################################################################################### +# Description: This script runs the plotting code in BoutrosLab.plotting.general for testing purposes +# The plots are stored in variables and plotted together in a single multiple in order to save plot-generation time + +warning(paste( + 'BPG will discontinue this test file in v8.0.0.', + 'Instead, tests will use the standard testthat format.', + 'For more information, see https://testthat.r-lib.org/' + )); + +### LOAD LIBRARY ################################################################################### +library(BoutrosLab.plotting.general); + +### PLOTTING FUNCTIONS ############################################################################# +test.data <- data.frame( + x = 1:10, + y = LETTERS[1:10], + z = rnorm(10), + type = rep(LETTERS[1:2], 5), + stringsAsFactors = TRUE + ); + +# testing legend.grob +covariate.legend <- list( + legend = list( + colours = default.colours(2), + labels = levels(test.data$type)[1:2] + ) + ); + +legend.grob2 <- legend.grob( + legends = covariate.legend + ); + +# testing covariates.grob +covariate.colours1 <- as.character(test.data$type); +covariate.colours1[covariate.colours1 == 'A'] <- default.colours(2)[1]; +covariate.colours1[covariate.colours1 == 'B'] <- default.colours(2)[2]; + +# create an object to draw the covariates from +covariates1 <- list( + rect = list( + col = 'black', + fill = covariate.colours1, + lwd = 1.5 + ) + ); + +covariates.grob1 <- covariates.grob( + covariates = covariates1, + ord = c(1:10), + side = 'top', + size = .8 + ); + +barplot <- create.barplot( + formula = y ~ x, + data = test.data, + legend = list( + bottom = list( + fun = covariates.grob1 + ), + right = list( + fun = legend.grob2 + ), + inside = list( + fun = draw.key, + args = list( + key = get.corr.key( + x = test.data$x, + y = test.data$y, + label.items = c('spearman', 'spearman.p', 'kendall', 'beta1') + ) + ), + x = 0.5, + y = 0.5 + ) + ), + description = 'testing metadata' + ); + +# this isn't printed anywhere +dend <- create.dendrogram( + x = data.frame(test.data$z, rnorm(10)) + ); + +# # This is the slowest running function +# heatmap <- create.heatmap( +# x = as.matrix(test.data$z), +# clustering.method = 'none' +# ); + +dotmap <- create.dotmap( + x = test.data$z + ); + +hexbin <- create.hexbinplot( + formula = z ~ x, + data = test.data + ); + +# Also using generate.at.final() +density <- create.densityplot( + x = list( + a = test.data$x, + b = test.data$z + ), + xat = c(0, 1.1, 1.5, 1, 6, 4), + yat = c(0.34, 0.38, 0.7), + type = c('g', 'l'), + resolution = 100 + ); + +manhattanplot <- create.manhattanplot( + formula = x ~ y, + data = test.data + ); + +polygonplot <- create.polygonplot( + formula = NA ~ x, + data = test.data, + max = test.data$x, + min = test.data$z, + xlimits = c(0, 10), + ylimits = c(-2, 10) + ); + +qqcomp <- create.qqplot.comparison( + x = list(test.data$x, test.data$z) + ); + +scatter <- create.scatterplot( + formula = x ~ z, + data = test.data + ); + +seg <- create.segplot( + formula = y ~ x + z, + data = test.data + ); + +violin <- create.violinplot( + formula = y ~ z, + data = test.data + ); + +strip <- create.stripplot( + formula = z ~ y, + data = test.data + ); + +boxplot <- create.boxplot( + formula = x ~ y, + data = test.data + ); + +# these do not easily join the multiplot +histogram <- create.histogram( + x = test.data$z + ); + +qqfit <- create.qqplot.fit( + x = test.data$z + ); + +# Plot everything in one plot for quicker running time +create.multiplot( + file = NULL, + plot.objects = list(polygonplot, manhattanplot, hexbin, dotmap, density, qqcomp, scatter, seg, violin, barplot, strip, boxplot) + ); + +### HELPER FUNCTIONS ############################################################################### + +get.line.breaks(1:10); + +scientific.notation(1234, 2, type = 'list'); +scientific.notation(0, 2); +scientific.notation(c(1234, 1234), 1); + +# This returns the same thing as when type = 'expression' - should something be changed? +scientific.notation(c(1234, 1234), 1, type = 'list'); + +display.statistical.result(1234); + +### COLOUR FUNCTIONS ############################################################################### +default.colours(12, is.greyscale = FALSE); +default.colours(5, palette.type = 'chromosomes', is.greyscale = FALSE); +default.colours(5, palette.type = 'seq'); +default.colours(c(4, 4), palette.type = c('seq', 'div')); + +# display.colours(default.colours(3)); +# display.colours(grey(0.5)); + +force.colour.scheme(c('stopgain snv', 'splicing'), 'annovar.annotation');