MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: GraphPlot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70808] Re: [mg70775] GraphPlot
  • From: Matt Curcio <matt at aggregateknowledge.com>
  • Date: Sat, 28 Oct 2006 05:21:48 -0400 (EDT)
  • References: <200610270428.AAA24447@smc.vnet.net> <4541F805.6080501@wolfram.com>

Carl,
	Thanks for your reply.  Sorry I was unclear, let me try to explain  
better with a simpler example.  When you run the code:

<< DiscreteMath`GraphPlot`;
GraphPlot[{1 -> 2, 2 -> 3, 3 -> 1, 3 -> 4, 5 -> 6,   6 -> 5},   
VertexStyleFunction -> (Text[#, #] &)


You see two graphs with the vertices labeled.  The rightmost graph is  
composed of the components {5->6, 6->5}.  But the only way I know  
that is because I've labeled the vertices and my dataset above is so  
small.  What I would like is a function that does the following:

MagicalGraphCoordinatesFunction[ {1 -> 2, 2 -> 3, 3 -> 1, 3 -> 4, 5 - 
 > 6,   6 -> 5} ];

which returns:
{{1 -> 2, 2 -> 3, 3 -> 1, 3 -> 4}, 	{5 -> 6,   6 -> 5}}

i.e. A list with the elements of the two directed graphs in my data.   
I am essentially using GraphPlot to discover how many directed graph  
clusters are in my data.  Its great to visualize them, but I would  
really like to know which elements make up the subgraphs.

Thanks again,
Matt



On Oct 27, 2006, at 5:13 AM, Carl Woll wrote:

> Matt Curcio wrote:
>
>> Hi,
>> 	I have a question about extracting data from the internals of   
>> GraphPlot.  For example, the following code plots multiple  
>> subplots  of disconnected clusters.
>>
>> << DiscreteMath`GraphPlot`
>> n = 129;
>> d = Table[i -> Mod[i^2, n], {i, 0, n - 1}];
>> GraphPlot[d];
>>
>> However, I would like to know the subsets that are being plotted.   
>> I  know you can plot the vertex labels on the chart, but my  
>> dataset is  ~50,000 connected vertices and GraphPlot outputs ~100  
>> clusters, so  vertex labeling is unrealistic.  It would be very  
>> interesting to know  which vertices GraphPlot has associated.   
>> There maybe a way to do  this using some functions from  
>> "Combninatorica" but I have not been  able to find them.  Can  
>> anyone help?
>>
>> Thanks,
>> Matt
>>
> I'm not clear on what you want, but have you tried StrongComponents  
> from the GraphPlot package? This function will give you a list of  
> the vertices in each disconnected cluster (assuming the graph is  
> undirected). In your example, we would convert d to an undirected  
> graph and then use StrongComponents:
>
> comps = StrongComponents[ Join[d, Reverse/@d] ];
>
> In[30]:=
> Length[comps]
> Out[30]=
> 14
>
> Carl Woll


  • References:
    • GraphPlot
      • From: Matt Curcio <matt@aggregateknowledge.com>
  • Prev by Date: Re: GraphPlot
  • Next by Date: "unload" a package
  • Previous by thread: Re: GraphPlot
  • Next by thread: Re: GraphPlot