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 simList,character,logical
moduleDiagram(sim, type = "plot", showParents = TRUE, ...)
# S4 method for 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 colored blobs. Internally,
this is calling moduleGraph()
. Default FALSE
.
Additional arguments passed to plotting function specified by type
.
Plots module dependency diagram.
igraph()
, moduleGraph()
for a version that accounts for
parent and children module structure.
if (FALSE) {
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 = system.file("sampleModules", package = "SpaDES.core")
)
# 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)
}
}