
Plot an ABN DAG using formula statement or a matrix in using Rgraphviz through the graphAM class.
plotAbn(dag, data.dists=NULL, markov.blanket.node=NULL, fitted.values=NULL,
digits=2, edge.strength=NULL, edge.strength.lwd=5, edge.direction="pc",
edge.color="black", edge.linetype="solid", edge.arrowsize=0.6,
edge.fontsize=node.fontsize, node.fontsize=12,
node.fillcolor=c("lightblue", "brown3", "chartreuse3"),
node.fillcolor.list=NULL,
node.shape=c("circle", "box", "ellipse", "diamond"),
plot=TRUE,
data.df=NULL, ...)
A rendered graph, if plot=TRUE
. The graphAM
object is returned invisibly.
a matrix or a formula statement (see details for format) defining
the network structure, a Directed Acyclic Graph (DAG).
Note that rownames must be set or given in data.dists
.
a named list giving the distribution for each node in the network, see details.
name of variables to display its Markov blanket.
modes or coefficents outputted from fitAbn
.
number of digits to display the fitted.values
.
a named matrix containing evaluations of edge strength
which will change the arcs width (could be Mutual information, p-values,
number of bootstrap retrieve samples or the outcome of the linkStrength
).
maximum line width for edge.strength
.
character giving the direction in which arcs should
be plotted, pc
(parent to child) or cp
(child to parent) or undirected
.
the colour of the edge.
the linetype of the edge. Defaults to "solid"
.
Valid values are the same as for the R's base graphic parameter lty
.
the thickness of the arrows. Not relevant if arc.strength
is provided.
the font size of the arcs fitted values.
the font size of the nodes names.
the colour of the node. Second and third element is used for the Markov blanket and node of the Markov blanket.
the list of node that should be coloured.
the shape of the nodes according the Gaussian, binomial, Poisson and multinomial distributions.
logical variable, if set to TRUE
then the graph is plotted.
NULL or a data frame containing the data for the nodes in the network. Only needed if dag
is a formula statement. If dag is an object of class abnFit
, then data.df
is used from there.
arguments passed to the plotting function.
By default binomial nodes are squares, multinomial nodes are empty, Gaussian nodes are circles and poison nodes are ellipses.
The dag
can be provided using a formula statement (similar to glm). A typical formula is ~ node1|parent1:parent2 + node2:node3|parent3
.
The construction is based on the graph package. Properties of the graph can be changed after the construction, see ‘Examples’.
graphAM-class
, edgeRenderInfo
# Define distribution list
dist <- list(a = "gaussian",
b = "gaussian",
c = "gaussian",
d = "gaussian",
e = "binomial",
f = "binomial")
# Define a matrix formulation
edge_strength <- matrix(c(0, 0.5, 0.5, 0.7, 0.1, 0,
0, 0, 0.3, 0.1, 0, 0.8,
0, 0, 0, 0.35, 0.66, 0,
0, 0, 0, 0, 0.9, 0,
0, 0, 0, 0, 0, 0.8,
0, 0, 0, 0, 0, 0),
nrow = 6L,
ncol = 6L,
byrow = TRUE)
## Naming of the matrix
colnames(edge_strength) <- rownames(edge_strength) <- names(dist)
## Random Data
df <- data.frame(a = rnorm(100),
b = rnorm(100),
c = rnorm(100),
d = rnorm(100),
e = rbinom(100, 1, 0.5),
f = rbinom(100, 1, 0.5))
## Plot form a matrix
plotAbn(dag = edge_strength,
data.dists = dist)
## Edge strength
plotAbn(dag = ~ a | b:c:d:e + b | c:d:f + c | d:e + d | e + e | f,
data.dists = dist,
edge.strength = edge_strength,
data.df = df)
## Plot from a formula for a different DAG!
plotAbn(dag = ~ a | b:c:e + b | c:d:f + e | f,
data.dists = dist,
data.df = df)
## Markov blanket
plotAbn(dag = ~ a | b:c:e + b | c:d:f + e | f,
data.dists = dist,
markov.blanket.node = "e",
data.df = df)
## Change col for all edges
tmp <- plotAbn(dag = ~ a | b:c:e + b | c:d:f + e | f,
data.dists = dist,
plot = FALSE,
data.df = df)
graph::edgeRenderInfo(tmp) <- list(col = "blue")
Rgraphviz::renderGraph(tmp)
## Change lty for individual ones. Named vector is necessary
tmp <- plotAbn(dag = ~ a | b:c:e + b | c:d:f + e | f,
data.dists = dist,
plot = FALSE,
data.df = df)
edgelty <- rep(c("solid", "dotted"), c(6, 1))
names(edgelty) <- names(graph::edgeRenderInfo(tmp, "col"))
graph::edgeRenderInfo(tmp) <- list(lty = edgelty)
Rgraphviz::renderGraph(tmp)
Run the code above in your browser using DataLab