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.

Reply via email to