Create a network diagram illustrating the simplified module dependencies of a
simulation. Offers a less detailed view of specific objects than does
plotting the depsEdgeList
directly with objectDiagram()
.
moduleDiagram(sim, type, showParents = TRUE, ...)
# S4 method for class 'simList,character,logical'
moduleDiagram(sim, type = "plot", showParents = TRUE, ...)
# S4 method for class 'simList,ANY,ANY'
moduleDiagram(sim, type, showParents = TRUE, ...)
A simList
object (typically corresponding to a
completed simulation).
Character string, either "rgl"
for igraph::rglplot
or "tk"
for igraph::tkplot
, "Plot"
to use quickPlot::Plot()
or "plot"
to use base::plot()
, the default.
Logical. If TRUE, then any children that are grouped into parent
modules will be grouped together by coloured blobs. Internally,
this is calling moduleGraph()
. Default FALSE
.
Additional arguments passed to plotting function specified by type
.
invoked for its side effect of plotting the module dependency diagram.
igraph()
, moduleGraph()
for a version that accounts for
parent and children module structure.
# \donttest{
if (requireNamespace("SpaDES.tools", quietly = TRUE) &&
requireNamespace("NLMR", quietly = TRUE)) {
library(igraph)
times <- list(start = 0, end = 6, "month")
parameters <- list(
.globals = list(stackName = "landscape"),
caribouMovement = list(
.saveObjects = "caribou",
.saveInitialTime = 1, .saveInterval = 1
),
randomLandscapes = list(.plotInitialTime = NA, nx = 20, ny = 20))
modules <- list("randomLandscapes", "caribouMovement")
paths <- list(
modulePath = getSampleModules(tempdir())
)
# Set some options so example runs faster
opts <- options(spades.moduleCodeChecks = FALSE, spades.loadReqdPkgs = FALSE)
sim <- simInit(times = times, params = parameters, modules = modules,
paths = paths)
options(opts)
moduleDiagram(sim)
# Can also use default base::plot
modDia <- depsGraph(sim, plot = TRUE)
# See ?plot.igraph
plot(modDia, layout = layout_as_star)
# Or for more control - here, change the label "_INPUT_" to "DATA"
edgeList <- depsEdgeList(sim)
edgeList <- edgeList[, list(from, to)]
edgeList[from == "_INPUT_", from := "Data"]
edgeList[to == "_INPUT_", to := "Data"]
edgeList <- unique(edgeList)
ig <- graph_from_data_frame(edgeList[, list(from, to)])
plot(ig)
}
#>
#> Attaching package: ‘igraph’
#> The following objects are masked from ‘package:terra’:
#>
#> blocks, compare, union
#> The following object is masked from ‘package:testthat’:
#>
#> compare
#> The following objects are masked from ‘package:stats’:
#>
#> decompose, spectrum
#> The following object is masked from ‘package:base’:
#>
#> union
#> Setting:
#> options(
#> spades.modulePath = '/tmp/Rtmp45trFG/sampleModules'
#> )
#> Paths set to:
#> options(
#> rasterTmpDir = '/tmp/Rtmp45trFG/SpaDES/scratch/raster'
#> reproducible.cachePath = '/tmp/Rtmp45trFG/reproducible/cache'
#> spades.inputPath = '/tmp/Rtmp45trFG/SpaDES/inputs'
#> spades.outputPath = '/tmp/Rtmp45trFG/SpaDES/outputs'
#> spades.modulePath = '/tmp/Rtmp45trFG/sampleModules'
#> spades.scratchPath = '/tmp/Rtmp45trFG/SpaDES/scratch'
#> )
#> terra::terraOptions(tempdir = '/tmp/Rtmp45trFG/SpaDES/scratch/terra'
#> Nov21 04:22:36 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Nov21 04:22:36 simInit The following .globals were used:
#> Nov21 04:22:36 simInit Key: <global, module>
#> Nov21 04:22:36 simInit module global
#> Nov21 04:22:36 simInit <char> <char>
#> Nov21 04:22:36 simInit 1: caribouMovement stackName
#> Nov21 04:22:36 simInit 2: randomLandscapes stackName
#> Elpsed time for simInit: 0.09408545 secs
#> Plot encountered an error; trying base::plot
# }