[Rd] pcalg: labels

Peter Danenberg pcd at wikitex.org
Mon Nov 26 09:22:04 CET 2007


I never got a response from pcalg's maintainer, so I thought I'd
publisher a patch here that allows you to specify optional
node-labels; when no labels are specified, `plot' falls back on the
default behaviour of labelling nodes sequentially.
-------------- next part --------------
diff -Naur pcalg-orig/R/pcalg.R pcalg/R/pcalg.R
--- pcalg-orig/R/pcalg.R	2007-03-22 03:20:49.000000000 -0700
+++ pcalg/R/pcalg.R	2007-11-26 00:07:24.000000000 -0800
@@ -292,14 +292,25 @@
 	  })
 
 setMethod("plot", signature(x = "pcAlgo"),
-	  function(x, y, main = NULL, zvalue.lwd = FALSE, lwd.max = 7, ...)
+	  function(x, y, main = NULL, zvalue.lwd = FALSE, lwd.max = 7,
+		   labels = NULL, ...)
       {
 	if(is.null(main))
 	    main <- deparse(x at call)
+        attrs <- list()
+        nodeAttrs <- list()
+        if (!is.null(labels)) {
+          attrs$node <- list(shape = "ellipse", fixedsize = FALSE)
+          names(labels) <- nodes(x at graph)
+          nodeAttrs$label <- labels
+        }
         if (zvalue.lwd & numEdges(x at graph)!=0) {
           lwd.Matrix <- x at zMin
           lwd.Matrix <- ceiling(lwd.max*lwd.Matrix/max(lwd.Matrix))
-          z <- agopen(x at graph,name="lwdGraph")
+          z <- agopen(x at graph,
+                      name="lwdGraph",
+                      nodeAttrs = nodeAttrs,
+                      attrs = attrs)
           eLength <- length(z at AgEdge)
           for (i in 1:eLength) {
             x <- as.numeric(z at AgEdge[[i]]@head)
@@ -308,7 +319,8 @@
           }
           plot(z, main = main, ...)
         } else {
-          plot(x at graph, main = main, ...)
+          plot(x at graph, nodeAttrs = nodeAttrs, main = main,
+               attrs = attrs, ...)
         }
       })
 


More information about the R-devel mailing list