Description Usage Details Value Note Author(s) See Also Examples
Return matrix with labels of valid edge classes and the valid edge classes
1 |
The argument edgeClasses to the functions
dynamicGraphMain and DynamicGraph, and to
dg.VertexEdge-class and returnEdgeList
is by default the returned value of this
function. If new edge classes are created then edgeClasses
should be set to a value with this returned value extended appropriate.
Matrix of text strings with labels (used in dialog windows) of valid edge classes and the valid edge classes (used to create the edges).
The "draw" method for an edge should return a list with the items "lines", "tags", "from", "to", label" and "label.position". "lines" is the "tk"-objects for line objects between pairs of vertices, with coordinates at the vertices. "tags" is the "tk" -objects for objects between pairs of vertices, with coordinates at the middle of the two vertices.
Jens Henrik Badsberg
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | require(tcltk)
# Test with new edge class (demo(Circle.newEdge)):
setClass("NewEdge", contains = c("dg.VertexEdge", "dg.Edge", "dg.Node"))
myEdgeClasses <- rbind(validEdgeClasses(),
NewEdge = c("NewEdge", "NewEdge"))
setMethod("draw", "NewEdge",
function(object, canvas, position,
x = lapply(position, function(e) e[1]),
y = lapply(position, function(e) e[2]),
stratum = as.vector(rep(0, length(position)),
mode = "list"),
w = 2, color = "green", background = "white",
font.edge.label = "8x16")
{
f <- function(i, j) {
dash <- "."
arrowhead <- "both"
l <- function(xi, yi, xj, yj)
tkcreate(canvas, "line", xi, yi, xj, yj, width = w,
arrow = arrowhead, dash = dash,
# arrowshape = as.list(c(2, 5, 3) * w),
fill = color(object), activefill = "DarkSlateGray")
lines <- list(l(x[[i]], y[[i]], x[[j]], y[[j]]))
label.position <- (position[[i]] + position[[j]]) / 2
pos <- label.position + rep(0, length(label.position))
label <- tkcreate(canvas, "text", pos[1], pos[2],
text = object@label, anchor = "nw",
font = "8x16", activefill = "DarkSlateGray")
tags <- NULL
x. <- mean(unlist(x))
y. <- mean(unlist(y))
s <- 4 * w * sqrt(4 / pi)
p <- tkcreate(canvas, "rectangle",
x. - s, y. - s, x. + s, y. + s,
fill = color(object), activefill = "SeaGreen")
tags <- list(p)
return(list(lines = lines, tags = tags,
from = object@vertex.indices[i],
to = object@vertex.indices[j],
label = label, label.position = label.position))
}
result <- NULL
edge <- object@vertex.indices
m <- length(edge)
for (j in seq(along = edge))
if (j < length(edge))
for (k in (j+1):length(edge))
result <- append(result, list(f(j, k)))
return(result)
})
setMethod("addToPopups", "NewEdge",
function(object, type, nodePopupMenu, i,
updateArguments, Args, ...)
{
tkadd(nodePopupMenu, "command",
label = paste(" --- This is a my new vertex!"),
command = function() { print(name(object))})
})
V.Types <- c("Discrete", "Ordinal", "Discrete",
"Continuous", "Discrete", "Continuous")
V.Names <- c("Sex", "Age", "Eye", "FEV", "Hair", "Shosize")
V.Labels <- paste(V.Names, 1:6, sep ="/")
From <- c(1, 2, 3, 4, 5, 6, 3)
To <- c(2, 3, 4, 5, 6, 1, 6)
control <- dg.control(updateEdgeLabels = FALSE,
edgeColor = "green", vertexColor = "blue",
edgeClasses = myEdgeClasses)
simpleGraph.Z.nE <- new("dg.simple.graph", vertex.names = V.Names,
types = V.Types, labels = V.Labels,
from = From, to = To,
edge.types = c("NewEdge",
"VertexEdge",
"Dashed",
"Dotted",
"DoubleArrow",
"DoubleConnected",
"TripleConnected"),
texts = c("Gryf", "gaf"))
graph.Z.nE <- simpleGraphToGraph(simpleGraph.Z.nE, control = control)
Object <- NULL
Z.nE <- dg(graph.Z.nE, modelObject = Object, control = control, title = "Z")
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.