Valid edge classes
Return matrix with labels of valid edge classes and the valid edge classes
validEdgeClasses()
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
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")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.