From ea86f63973a9d6f1aee68256f32c499dca4bbed3 Mon Sep 17 00:00:00 2001 From: "Aaron A. King" Date: Mon, 10 Apr 2023 10:30:35 -0400 Subject: [PATCH] include plot_matrix --- DESCRIPTION | 7 +- NAMESPACE | 25 ++++++ R/plot_matrix.R | 175 ++++++++++++++++++++++++++++++++++++ TODO.md | 1 + examples/plot_matrix.R | 27 ++++++ inst/NEWS | 4 + inst/NEWS.Rd | 5 ++ man/plot_matrix.Rd | 83 +++++++++++++++++ tests/plot_matrix-1.png | Bin 0 -> 35256 bytes tests/plot_matrix-2.png | Bin 0 -> 26799 bytes tests/plot_matrix-3.png | Bin 0 -> 4608 bytes tests/plot_matrix-4.png | Bin 0 -> 37234 bytes tests/plot_matrix-5.png | Bin 0 -> 23367 bytes tests/plot_matrix.R | 34 +++++++ tests/plot_matrix.Rout.save | 85 ++++++++++++++++++ 15 files changed, 443 insertions(+), 3 deletions(-) create mode 100644 R/plot_matrix.R create mode 100644 TODO.md create mode 100644 examples/plot_matrix.R create mode 100644 man/plot_matrix.Rd create mode 100644 tests/plot_matrix-1.png create mode 100644 tests/plot_matrix-2.png create mode 100644 tests/plot_matrix-3.png create mode 100644 tests/plot_matrix-4.png create mode 100644 tests/plot_matrix-5.png create mode 100644 tests/plot_matrix.R create mode 100644 tests/plot_matrix.Rout.save diff --git a/DESCRIPTION b/DESCRIPTION index 8b235f0..3230f22 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,15 +1,15 @@ Package: circumstance Type: Package Title: pomp parallelized -Version: 0.0.5.3 -Date: 2023-04-06 +Version: 0.0.6.0 +Date: 2023-04-10 Maintainer: Aaron A. King Description: Helper functions for parallelizing pomp computations. Authors@R: c(person(given=c("Aaron","A."),family="King", role=c("aut","cre"),email="kingaa@umich.edu")) URL: https://kingaa.github.io/circumstance/ Depends: R(>= 4.1.0), pomp(>= 4.6.4) -Imports: methods, foreach +Imports: methods, foreach, grid, grDevices, graphics, utils Suggests: doFuture, doRNG, dplyr, tidyr, ggplot2 Remotes: kingaa/pomp License: GPL-3 @@ -24,3 +24,4 @@ Collate: 'continue.R' 'pfilter.R' 'mif2.R' + 'plot_matrix.R' diff --git a/NAMESPACE b/NAMESPACE index 0e2d730..4f39b8a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,12 +1,37 @@ # Generated by roxygen2: do not edit by hand +S3method(plot_matrix,data.frame) +S3method(plot_matrix,list) +S3method(print,plotmatrix) export(continue) +export(plot_matrix) exportMethods(continue) exportMethods(mif2) exportMethods(pfilter) import(methods) importFrom(foreach,"%dopar%") importFrom(foreach,foreach) +importFrom(grDevices,grey) +importFrom(graphics,hist) +importFrom(grid,frameGrob) +importFrom(grid,gList) +importFrom(grid,gTree) +importFrom(grid,gpar) +importFrom(grid,grid.draw) +importFrom(grid,grid.layout) +importFrom(grid,grid.newpage) +importFrom(grid,packGrob) +importFrom(grid,placeGrob) +importFrom(grid,pointsGrob) +importFrom(grid,popViewport) +importFrom(grid,pushViewport) +importFrom(grid,rectGrob) +importFrom(grid,textGrob) +importFrom(grid,unit) +importFrom(grid,viewport) +importFrom(grid,xaxisGrob) +importFrom(grid,yaxisGrob) importFrom(pomp,mif2) importFrom(pomp,pfilter) importFrom(utils,globalVariables) +importFrom(utils,head) diff --git a/R/plot_matrix.R b/R/plot_matrix.R new file mode 100644 index 0000000..78a8604 --- /dev/null +++ b/R/plot_matrix.R @@ -0,0 +1,175 @@ +##' A scatterplot matrix with densities on the diagonal. +##' +##' A special scatterplot matrix. +##' +##' @name plot_matrix +##' @rdname plot_matrix +##' +##' @param data Data to plot. +##' @param marg.exp Fraction by which to expand the plot at the margins. +##' @param labels Names of variables plotted. +##' @param alpha,pch,size Refer to the plotted points in the scatterplots. +##' @param \dots optional arguments, passed to \code{\link{hist}}. +##' @param x \code{plot_matrix} object to display. +##' @param newpage logical; if \code{TRUE}, \code{grid.newpage()} will be called +##' before the graphics are drawn. +##' @param vp viewport to use. See \code{\link[grid]{viewport}}. +##' @example examples/plot_matrix.R +##' @importFrom grid unit grid.newpage +##' viewport pushViewport popViewport +##' gList gTree gpar grid.draw grid.layout grid.newpage +##' packGrob placeGrob pointsGrob rectGrob textGrob frameGrob xaxisGrob yaxisGrob +##' @importFrom grDevices grey +##' @importFrom graphics hist +##' @importFrom utils head +##' +NULL + +plot_matrix.internal <- function (data, marg.exp=0.02, labels = names(data), + alpha = 1, pch = 16, size = unit(0.03,"npc"), + ...) { + + nvar <- length(data) + + histos <- lapply(data,hist,plot=FALSE,...,warn.unused=FALSE) + + ranges <- lapply( + histos, + function (x) { + r <- range(x$breaks) + d <- marg.exp*diff(r) + r+c(-d,d) + } + ) + + splot <- function (a, b, xaxis, yaxis) { + gTree( + children=gList( + rectGrob( + gp=gpar(col='black',fill=NA) + ), + pointsGrob( + x=data[[a]], + y=data[[b]], + pch=pch, + size=size, + gp=gpar(col="black",alpha=alpha) + ), + if (xaxis[1]) xaxisGrob(main=xaxis[2]) else NULL, + if (xaxis[1]) { + if (xaxis[2]) + textGrob(labels[a],y=unit(-3,"lines")) + else + textGrob(labels[a],y=unit(1,"npc")+unit(3,"lines")) + } else NULL, + if (yaxis[1]) yaxisGrob(main=yaxis[2]) else NULL, + if (yaxis[1]) { + if (yaxis[2]) + textGrob(labels[b],x=unit(-3,"lines")) + else + textGrob(labels[b],x=unit(1,"npc")+unit(3,"lines")) + } else NULL + ), + vp=viewport( + xscale=ranges[[a]], + yscale=ranges[[b]] + ) + ) + } + + hplot <- function (a, xaxis) { + y <- histos[[a]]$density + x <- head(histos[[a]]$breaks,-1) + w <- diff(histos[[a]]$breaks) + gTree( + children=gList( + rectGrob( + gp=gpar(col='black',fill=NA) + ), + rectGrob( + x=x, + y=0, + width=w, + height=y, + just=c(0,0), + default.units='native', + gp=gpar(fill=grey(0.8)) + ), + if (xaxis[1]) xaxisGrob(main=xaxis[2]) else NULL, + if (xaxis[1]) { + if (xaxis[2]) + textGrob(labels[a],y=unit(-3,"lines")) + else + textGrob(labels[a],y=unit(1,"npc")+unit(3,"lines")) + } else NULL + ), + vp=viewport( + xscale=ranges[[a]], + yscale=c(0,(1+marg.exp)*max(histos[[a]]$density)) + ) + ) + } + + fg <- frameGrob(layout=grid.layout(nrow=length(data),ncol=length(data))) + for (i in seq_len(nvar)) { + for (j in seq_len(nvar)) { + if (i == j) { + fg <- placeGrob( + fg, + hplot(i, + xaxis=c( + ((j==1)&&(i%%2==0))||((j==nvar)&&(i%%2==1)), + j==nvar + ) + ), + row=i,col=i + ) + } else { + fg <- placeGrob( + fg, + splot(i,j, + xaxis=c( + ((j==1)&&(i%%2==0))||((j==nvar)&&(i%%2==1)), + j==nvar + ), + yaxis=c( + ((i==1)&&(j%%2==0))||((i==nvar)&&(j%%2==1))|| + ((i==1)&&(j==nvar)), + (i==1) + ) + ), + row=j,col=i + ) + } + } + } + gob <- packGrob( + frameGrob(), + fg, + width=unit(1,"npc")-unit(8,"lines"), + height=unit(1,"npc")-unit(8,"lines") + ) + class(gob) <- c("plotmatrix",class(gob)) + gob +} + +##' @rdname plot_matrix +##' @export +plot_matrix <- function (data, ...) UseMethod("plot_matrix") + +##' @rdname plot_matrix +##' @export +plot_matrix.list <- plot_matrix.internal + +##' @rdname plot_matrix +##' @export +plot_matrix.data.frame <- plot_matrix.internal + +##' @rdname plot_matrix +##' @export +print.plotmatrix <- function (x, newpage = is.null(vp), vp = NULL, ...) { + if (newpage) grid.newpage() + if (!is.null(vp)) pushViewport(vp) + grid.draw(x) + if (!is.null(vp)) popViewport() +} diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..80ca73c --- /dev/null +++ b/TODO.md @@ -0,0 +1 @@ +- Smoothing tool for 'pfilterd_pomp' and 'pmcmcd_pomp' objects diff --git a/examples/plot_matrix.R b/examples/plot_matrix.R new file mode 100644 index 0000000..bf500f1 --- /dev/null +++ b/examples/plot_matrix.R @@ -0,0 +1,27 @@ +\donttest{ # requires dplyr + library(dplyr) + + data.frame( + a=rexp(n=1000,rate=1/3), + b=rnorm(1000) + ) |> + mutate( + c=a+b^2, + d=a-b^3 + ) -> x + + print(plot_matrix(x,alpha=0.2)) + + g <- plot_matrix( + x[-2], + labels=c( + expression(alpha), + expression(beta), + expression(phi) + ), + alpha=0.3 + ) + print(g) + + print(plot_matrix(as.list(x),alpha=0.2,breaks="scott")) +} diff --git a/inst/NEWS b/inst/NEWS index 1d29910..c10503e 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -1,5 +1,9 @@ _N_e_w_s _f_o_r _p_a_c_k_a_g_e '_c_i_r_c_u_m_s_t_a_n_c_e' +_C_h_a_n_g_e_s _i_n '_c_i_r_c_u_m_s_t_a_n_c_e' _v_e_r_s_i_o_n _0._0._6: + + • New ‘plot_matrix’ method for making scatterplot matrices. + _C_h_a_n_g_e_s _i_n '_c_i_r_c_u_m_s_t_a_n_c_e' _v_e_r_s_i_o_n _0._0._5: • New ‘mif2’ method for parallel iterated filtering. diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index 25efbc7..5338f36 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -1,5 +1,10 @@ \name{NEWS} \title{News for package `circumstance'} +\section{Changes in \pkg{circumstance} version 0.0.6}{ + \itemize{ + \item New \code{plot_matrix} method for making scatterplot matrices. + } +} \section{Changes in \pkg{circumstance} version 0.0.5}{ \itemize{ \item New \code{mif2} method for parallel iterated filtering. diff --git a/man/plot_matrix.Rd b/man/plot_matrix.Rd new file mode 100644 index 0000000..d133e80 --- /dev/null +++ b/man/plot_matrix.Rd @@ -0,0 +1,83 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/plot_matrix.R +\name{plot_matrix} +\alias{plot_matrix} +\alias{plot_matrix.list} +\alias{plot_matrix.data.frame} +\alias{print.plotmatrix} +\title{A scatterplot matrix with densities on the diagonal.} +\usage{ +plot_matrix(data, ...) + +\method{plot_matrix}{list}( + data, + marg.exp = 0.02, + labels = names(data), + alpha = 1, + pch = 16, + size = unit(0.03, "npc"), + ... +) + +\method{plot_matrix}{data.frame}( + data, + marg.exp = 0.02, + labels = names(data), + alpha = 1, + pch = 16, + size = unit(0.03, "npc"), + ... +) + +\method{print}{plotmatrix}(x, newpage = is.null(vp), vp = NULL, ...) +} +\arguments{ +\item{data}{Data to plot.} + +\item{\dots}{optional arguments, passed to \code{\link{hist}}.} + +\item{marg.exp}{Fraction by which to expand the plot at the margins.} + +\item{labels}{Names of variables plotted.} + +\item{alpha, pch, size}{Refer to the plotted points in the scatterplots.} + +\item{x}{\code{plot_matrix} object to display.} + +\item{newpage}{logical; if \code{TRUE}, \code{grid.newpage()} will be called +before the graphics are drawn.} + +\item{vp}{viewport to use. See \code{\link[grid]{viewport}}.} +} +\description{ +A special scatterplot matrix. +} +\examples{ +\donttest{ # requires dplyr + library(dplyr) + + data.frame( + a=rexp(n=1000,rate=1/3), + b=rnorm(1000) + ) |> + mutate( + c=a+b^2, + d=a-b^3 + ) -> x + + print(plot_matrix(x,alpha=0.2)) + + g <- plot_matrix( + x[-2], + labels=c( + expression(alpha), + expression(beta), + expression(phi) + ), + alpha=0.3 + ) + print(g) + + print(plot_matrix(as.list(x),alpha=0.2,breaks="scott")) +} +} diff --git a/tests/plot_matrix-1.png b/tests/plot_matrix-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ddff326fc5569a2265eb7e6711bfd26e19537fae GIT binary patch literal 35256 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

ukK80)AKBN~2A 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 literal 0 HcmV?d00001 diff --git a/tests/plot_matrix-2.png b/tests/plot_matrix-2.png new file mode 100644 index 0000000000000000000000000000000000000000..0213796f287b4e90dbe3b08667bd3776a40c6ec0 GIT binary patch literal 26799 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 J&vNF${|i`>uo3_O literal 0 HcmV?d00001 diff --git a/tests/plot_matrix-3.png b/tests/plot_matrix-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9306da55338ce489dff2870ecae75223ca298b5e GIT binary patch literal 4608 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 literal 0 HcmV?d00001 diff --git a/tests/plot_matrix-4.png b/tests/plot_matrix-4.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f306153f3f559d00379c02b39ae9b3e6cb529a GIT binary patch literal 37234 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 literal 0 HcmV?d00001 diff --git a/tests/plot_matrix-5.png b/tests/plot_matrix-5.png new file mode 100644 index 0000000000000000000000000000000000000000..c8309bca50c844bb275604e46908b766de34e746 GIT binary patch literal 23367 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 x + +plot_matrix(x,alpha=0.2) + +plot_matrix( + x[-2], + labels=c( + expression(alpha), + expression(beta), + expression(phi) + ), + alpha=0.3 +) + +(g <- plot_matrix(x[1])) + +g <- plot_matrix(as.list(x),alpha=0.2,breaks='scott') +print(g) + +try(plot_matrix(numeric(10))) + +print(g,vp=plotViewport(c(1,1,10,10)),newpage=T) +print(g,vp=viewport(x=0.8,y=0.8,width=0.4,height=0.4)) + +dev.off() + +try(plot_matrix(LETTERS)) diff --git a/tests/plot_matrix.Rout.save b/tests/plot_matrix.Rout.save new file mode 100644 index 0000000..b3ca7b0 --- /dev/null +++ b/tests/plot_matrix.Rout.save @@ -0,0 +1,85 @@ + +R version 4.2.3 (2023-03-15) -- "Shortstop Beagle" +Copyright (C) 2023 The R Foundation for Statistical Computing +Platform: x86_64-pc-linux-gnu (64-bit) + +R is free software and comes with ABSOLUTELY NO WARRANTY. +You are welcome to redistribute it under certain conditions. +Type 'license()' or 'licence()' for distribution details. + +R is a collaborative project with many contributors. +Type 'contributors()' for more information and +'citation()' on how to cite R or R packages in publications. + +Type 'demo()' for some demos, 'help()' for on-line help, or +'help.start()' for an HTML browser interface to help. +Type 'q()' to quit R. + +> library(dplyr) + +Attaching package: ‘dplyr’ + +The following objects are masked from ‘package:stats’: + + filter, lag + +The following objects are masked from ‘package:base’: + + intersect, setdiff, setequal, union + +> library(grid) +> library(circumstance) +Loading required package: pomp + +Welcome to pomp! + +As of version 4.6, no user-visible pomp function has a name that +includes a dot ('.'). Function names have been changed to replace the +dot with an underscore ('_'). For more information, see the pomp blog: +https://kingaa.github.io/pomp/blog.html. + + +Attaching package: ‘circumstance’ + +The following objects are masked from ‘package:pomp’: + + continue, mif2, pfilter + +> +> png(filename="plot_matrix-%01d.png",res=100) +> +> x <- data.frame(a=rexp(n=1000,rate=1/3),b=rnorm(1000)) +> mutate(x,c=a+b^2,d=a-b^3) -> x +> +> plot_matrix(x,alpha=0.2) +> +> plot_matrix( ++ x[-2], ++ labels=c( ++ expression(alpha), ++ expression(beta), ++ expression(phi) ++ ), ++ alpha=0.3 ++ ) +> +> (g <- plot_matrix(x[1])) +> +> g <- plot_matrix(as.list(x),alpha=0.2,breaks='scott') +> print(g) +> +> try(plot_matrix(numeric(10))) +Error in UseMethod("plot_matrix") : + no applicable method for 'plot_matrix' applied to an object of class "c('double', 'numeric')" +> +> print(g,vp=plotViewport(c(1,1,10,10)),newpage=T) +> print(g,vp=viewport(x=0.8,y=0.8,width=0.4,height=0.4)) +> +> dev.off() +null device + 1 +> +> try(plot_matrix(LETTERS)) +Error in UseMethod("plot_matrix") : + no applicable method for 'plot_matrix' applied to an object of class "character" +>