Last chance! 50% off unlimited learning
Sale ends in
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.
"renderGraph"(x, ..., drawNodes="renderNodes", drawEdges=renderEdges, graph.pars=list())
graph
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. 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
. 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. graph
with information about the
coordinates of the nodes in the coordinate system of the plotting
device added to the renderInfo
slot.layoutGraph
. The details for user
defined node drawing remain to be decided.
layoutGraph
,
link[graph:renderInfo-class]{nodeRenderInfo}
,
link[graph:renderInfo-class]{edgeRenderInfo}
,
link[graph:renderInfo-class]{graphRenderInfo}
,
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)
Run the code above in your browser using DataLab