renderGraph
Render a laid out graph object
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.
- Keywords
- methods
Usage
"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 (typeRgraphviz:::renderNodes
to see the function definition). This default function knows how to draw node shapes of typebox
,rectangle
,ellipse
,plaintext
,circle
andtriangle
. 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, andlabelX
,labelY
,fill
,col
,lwd
,lty
,textCol
,style
,label
andfontsize
, which are all defined by the layout algorithm or are graphicalnodeRenderInfo
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
andnone
. In addition, a user-defined function can be passed asarrowhead
orarrowtail
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 parameterscol
,lwd
andlty
. - graph.pars
- A list of rendering parameters to use as
defaults. Parameters that have been explicitely set using
nodeRenderInfo
,edgeRenderInfo
orgraphRenderInfo
take precendence. If not explicitely supplied, the value of a call tograph.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.See Also
layoutGraph
,
link[graph:renderInfo-class]{nodeRenderInfo}
,
link[graph:renderInfo-class]{edgeRenderInfo}
,
link[graph:renderInfo-class]{graphRenderInfo}
,
Examples
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)
Community examples
Looks like there are no examples yet.