The problem is that your graph is unconnected, it has two components and the as.dendrogram() function in igraph cannot handle that. fastgreedy.community() returns a matrix of merges that is not a complete dendrogram, the final top level merge of the components is missing.
A workaround is to modify the result of fastgreedy.community and add the missing row to the merges matrix, before calling as.dendrogram(). G. On Thu, May 31, 2012 at 7:42 PM, Aziz, Muhammad Fayez <az...@illinois.edu> wrote: > > Thank you so much Gabor for taking this on. Please find attached a sample > scenario with the problem of malfunctioning dendogram by fgc. I hope this > helps you narrow down to the solution. > > Best, > Fayez > > ________________________________________ > From: csardi.ga...@gmail.com [csardi.ga...@gmail.com] on behalf of Gábor > Csárdi [csa...@rmki.kfki.hu] > Sent: Thursday, May 31, 2012 4:23 PM > To: Aziz, Muhammad Fayez > Cc: r-help@r-project.org > Subject: Re: [R] community finding in a graph and heatplot > > On Thu, May 31, 2012 at 12:08 PM, Aziz, Muhammad Fayez > <az...@illinois.edu> wrote: >> >> Thank you so much Gabor for your reply. I had spotted your post earlier and >> it worked like a charm. Interestingly I have just ran into a trouble with >> the stament dend <- igraph:::as.dendrogram.igraph.walktrap(fc). Apparently >> the members are empty as when I print(dend) it says 'dendrogram' with 2 >> branches and members total, at height 93" while the error with using dend >> with dendrapply remians to be >> >> Error in `[[.dendrogram`(X, 2L) : attempt to set an attribute on NULL >> >> Any ideas? > > I would need to see fgc for this. Can you send it to me in private? Or > send some self-contained example that generates the same error? > > Gabor > >> My code looks like this >> >> File2Open = paste(FilePath, "NetworkFiles\\net\\", NetPrefix, >> " ", TPPostfix, ".net", sep = "") >> g <- read.graph(File2Open, format="pajek") >> >> g <- delete.isolates(g) >> g <- simplify(g) >> >> fgc <- fastgreedy.community(g, modularity=TRUE, weights = >> E(g)$weight) >> ModularityIndexfgc <- max(fgc$modularity) # fgc modularity >> ModularityIndexng <- modularity(g, membership, weights = >> E(g)$weight) # newman-girvan modularity >> dend <- igraph:::as.dendrogram.igraph.walktrap(fgc) >> >> png(filename = paste(FilePath, >> "Analysis\\Graphs\\EColiStressModuleHeatMap", NetPrefixAbbr, TPPostfix, >> ".png", sep = ""), width = 800, height = 800) # heat map is square >> >> adjMatrix = get.adjacency(g, attr="weight") >> DendNodeCounter <- 0 # counter for ColorGroupsOrdered >> ColorGroupsOrdered <- rep("red", vcount(g)) >> dendrapply(dend, colLab) # modifies ColorGroupsOrdered >> ________________________________________ >> From: csardi.ga...@gmail.com [csardi.ga...@gmail.com] on behalf of Gábor >> Csárdi [csa...@rmki.kfki.hu] >> Sent: Thursday, May 31, 2012 10:45 AM >> To: Aziz, Muhammad Fayez >> Cc: r-help@r-project.org >> Subject: Re: [R] community finding in a graph and heatplot >> >> On Tue, May 29, 2012 at 1:16 AM, Aziz, Muhammad Fayez >> <az...@illinois.edu> wrote: >>> >>> Hi everyone, >>> >>> I am using the fastgreedy.community function to get the $merges matrix and >>> the $modularity vector. This serves my purpose of testing modularity of my >>> graph. But I am "greedy" to plot the heat map and dendrrogram based on the >>> $merges dendogram matrix. I know that heatplot does the graphics part but I >>> am not sure if the dendogram generated by the heatplot will match the one >>> given by fastgreedy.community in all cases and that the heat map will >>> represent the same clustering. >> >> No, they are different. To plot fast-greedy results as a dendrogram, >> see this and the follow-ups: >> http://lists.gnu.org/archive/html/igraph-help/2010-11/msg00059.html >> >> Gabor >> >>> Tell me if my apprehension is incorrect. Otherwise please let me know of >>> any alternatives. Here is the code I am testing so far: >>> >>> # http://igraph.sourceforge.net/doc/R/modularity.html >>> # http://igraph.sourceforge.net/doc/R/fastgreedy.community.html >>> # http://igraph.sourceforge.net/doc/R/graph.constructors.html >>> >>> library(igraph) >>> library(made4) >>> >>> g <- graph(c(1,2, 2,3, 3,1, 4,5)-1, , FALSE) >>> print(g) >>> ModuleInfo <- fastgreedy.community(g) >>> print(ModuleInfo) >>> heatplot(c(1,2, 2,3, 3,1, 4,5)) >>> >>> >>> Thanks >>> Fayez >>> Grad student UIUC >>> IL, USA >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >> >> >> >> -- >> Gabor Csardi <csa...@rmki.kfki.hu> MTA KFKI RMKI > > > > -- > Gabor Csardi <csa...@rmki.kfki.hu> MTA KFKI RMKI -- Gabor Csardi <csa...@rmki.kfki.hu> MTA KFKI RMKI ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.