How to use the same node layout for a set of graph plots using graph and Rgraphviz?
0
0
Entering edit mode
Rand, Hugh ▴ 50
@rand-hugh-2609
Last seen 7.2 years ago
Hi all, Following up on Robert's idea, I have built a simple example of how to display several graphs that use the same node locations. The example is very bare-bones, and contains one bug (see below), but will suffice for simple cases. It is based on the release version of graph and Rgraphviz. The devel version (I am told) greatly improves the handling of attributes. I will send out a new version of this code once I have a bit more time to work with the current devel version of the libraries and make the code a bit less bare-boned (but that may take me a litte while). Hugh #Bug: The template graph that is used to display all the graphs is the union # of all the given graphs. As such, if you are working with directed # graphs, the template will not correctly display edge orientation. # #sessionInfo: # R version 2.6.1 (2007-11-26) # i386-pc-mingw32 # # locale: # English_United States.1252 # # attached base packages: # [1] stats graphics grDevices utils datasets methods base # # other attached packages: # [1] Rgraphviz_1.16.0 graph_1.15.6 # # loaded via a namespace (and not attached): # [1] cluster_1.11.9 tools_2.6.1 # # #Define Functions # #plot a graph whose edges are all in a second graph (template) plotGraphWithTemplate = function(g1,template,...){ e1 = edgeNames(g1); e2 = edgeNames(template); indexMatchingEdges = is.element(e2,e1); for(i in which(!indexMatchingEdges)){ template at AgEdge[[i]]@color="transparent"; } for(i in which(indexMatchingEdges)){ template at AgEdge[[i]]@color="blue"; } plot(template,...); } #create a graph from the union of all graphs in a list unionGraphList = function(aGraphList){ a = union(aGraphList[[1]],aGraphList[[2]]); for(i in 3:length(aGraphList)){ a = union(a,aGraphList[[i]]); } return(a); } #example to display a list of graphs with the vertices in the same location exampleDemo = function(){ #build graphs and template for plotting set.seed(123); n = 6; #number of graphs v = letters[1:8]; #vertex names m = c(1:3); #food for randomGraph p = .4; #more food for randomGraph aGraphList = replicate(n,randomGraph(V=v,M=m,p=p)); #a list of graphs aAll = unionGraphList(aGraphList); #all the edges template = agopen(aAll,name="union"); #a 'template' #show plots with and without a template par(mfcol=c(3,4)); lapply(aGraphList,plot); lapply(aGraphList,plotGraphWithTemplate,template=template); } # #Run the Example # require(graph); require(Rgraphviz); exampleDemo(); -----Original Message----- From: Robert Gentleman [mailto:rgentlem@fhcrc.org] Sent: Wednesday, January 30, 2008 1:45 PM To: Rand, Hugh Subject: Re: [BioC] How to use the same node layout for a set of graph plots using graph and Rgraphviz? life will be much easier in devel than release, we greatly improved the handling of attributes and colors etc Rand, Hugh wrote: > Hi Robert, > > Thanks for the work-around. I will post an example when I get a nice example sorted out. Sorry about not running sessionInfo to provide version info. > > Hugh > > -----Original Message----- > From: Robert Gentleman [mailto:rgentlem at fhcrc.org] > Sent: Tuesday, January 29, 2008 9:22 AM > To: Rand, Hugh > Cc: bioconductor at stat.math.ethz.ch > Subject: Re: [BioC] How to use the same node layout for a set of graph plots using graph and Rgraphviz? > > Hi Hugh, > Sorry to say not easily. And sorry for the long delay in responding, > I was trying a few things out, but solving this problem seems to require > a bit of redesign. > > The only thing that might work, in a fairly straightforward fashion > is, something like this: > > set.seed(123); > V = letters[1:7]; > M = c(1:3); > g1 = randomGraph(V,M,.5); > g2 = randomGraph(V,M,.5); > g3 = union(g1, g2) > > then layout g3, make a copy of it, set the edge color for g1 edges in > one copy to the background and for g2 in the other copy. > > You did not say which version of Rgraphviz you are using, but there > have been a lot of changes to the devel version to make setting node and > edge attributes for rendering simpler. > > best wishes > Robert > > > > Rand, Hugh wrote: >> Hi, >> >> I am using the packages "graph" and "Rgraphviz". I am using them to display a >> set of graphs which all have the same nodes, but different edges. To aid in the >> visual comparison, it would be useful to use the same node layout for all of >> the graphs. It would be fine to use the node layout from the first graph. It is >> unclear (to me) how to do this using the layout engine used in Rgraphviz. >> >> A concrete example: >> >> library("graph"); >> library("Rgraphviz"); >> set.seed(123); >> V = letters[1:7]; >> M = c(1:3); >> g1 = randomGraph(V,M,.5); >> g2 = randomGraph(V,M,.5); >> par(mfrow=c(1,2)); >> plot(g1); >> plot(g2); >> # The question: How do I now display both g1 and g2 (as seperate plots), >> # but with the nodes in the same place? I would be content with the node >> # locations taken from the layout for g1. >> >> Thanks, >> >> Hugh Rand >> rand at amgen.com >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> Bioconductor mailing list >> Bioconductor at stat.math.ethz.ch >> https://stat.ethz.ch/mailman/listinfo/bioconductor >> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor >> > > -- > Robert Gentleman, PhD > Program in Computational Biology > Division of Public Health Sciences > Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N, M2-B876 > PO Box 19024 > Seattle, Washington 98109-1024 > 206-667-7700 > rgentlem at fhcrc.org > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor > -- Robert Gentleman, PhD Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M2-B876 PO Box 19024 Seattle, Washington 98109-1024 206-667-7700 rgentlem at fhcrc.org
Cancer graph Rgraphviz Cancer graph Rgraphviz • 789 views
ADD COMMENT

Login before adding your answer.

Traffic: 509 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6