Render a laid out graph object

Description

This method uses the renderInfo slot of a graph object to render it on a plotting device. The graph must have been laid out using the layoutGraph function before.

Usage

1
2
## S4 method for signature 'graph'
renderGraph(x, ..., drawNodes="renderNodes", drawEdges=renderEdges, graph.pars=list())

Arguments

x

An object derived from class graph

drawNodes

A function that is used for the node rendering. The details of its API are still undecided, so far the input to the function is the (laid out) graph object. Defaults to renderNodes, which is not exported in the name space (type Rgraphviz:::renderNodes to see the function definition). This default function knows how to draw node shapes of type box, rectangle, ellipse, plaintext, circle and triangle. In addition, an arbitrary user-defined function can be passed on to draw the node. This function needs to be able to deal with the following arguments: a two-by-two matrix of the bounding box for the respective node, and labelX, labelY, fill, col, lwd, lty, textCol, style, label and fontsize, which are all defined by the layout algorithm or are graphical nodeRenderInfo parameters.

drawEdges

A function that is used for the edge rendering. Defaults to renderEdges. Currently, this function can draw different types of arrowheads: open, normal, dot, odot, box, obox, tee, diamond, odiamond and none. In addition, a user-defined function can be passed as arrowhead or arrowtail parameters which needs to be able to deal with 4 arguments: A list of xy coordinates for the center of the arrowhead, and the graphical parameters col, lwd and lty.

graph.pars

A list of rendering parameters to use as defaults. Parameters that have been explicitely set using nodeRenderInfo, edgeRenderInfo or graphRenderInfo take precendence. If not explicitely supplied, the value of a call to graph.par is used. This design allows to set session-wide defaults.

...

further arguments

Details

This method can render graph objects that have previously been laid out using the function layoutGraph. The details for user defined node drawing remain to be decided.

Value

An object derived from class graph with information about the coordinates of the nodes in the coordinate system of the plotting device added to the renderInfo slot.

Author(s)

Florian Hahne

See Also

layoutGraph, link[graph:renderInfo-class]{nodeRenderInfo}, link[graph:renderInfo-class]{edgeRenderInfo}, link[graph:renderInfo-class]{graphRenderInfo},

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
set.seed(123)
V <- letters[1:5]
M <- 1:2
g1 <- randomGraph(V, M, 0.5)
edgemode(g1) <- "directed"
x <- layoutGraph(g1)
renderGraph(x)

## one of Graphviz's additional layout algorithms
x <- layoutGraph(g1, layoutType="neato")
renderGraph(x)

## some tweaks to Graphviz's node and edge attributes,
## including a user-defined arrowhead and node shape functions.
myArrows <- function(x, ...)
{
for(i in 1:4)
points(x,cex=i)
}

myNode <- function(x, col, fill, ...)
symbols(x=mean(x[,1]), y=mean(x[,2]), thermometers=cbind(.5, 1,
runif(1)), inches=0.5,
fg=col, bg=fill, add=TRUE)

eAtt <- list(arrowhead=c("a~b"=myArrows, "b~d"="odiamond", "d~e"="tee"))
nAtt <- list(shape=c(d="box", c="ellipse", a=myNode))
edgemode(g1) <- "directed"
x <- layoutGraph(g1, edgeAttrs=eAtt, nodeAttrs=nAtt, layoutType="neato")
renderGraph(x)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.