Re: GraphPlot

• To: mathgroup at smc.vnet.net
• Subject: [mg70809] Re: [mg70775] GraphPlot
• From: Carl Woll <carlw at wolfram.com>
• Date: Sat, 28 Oct 2006 05:21:50 -0400 (EDT)

```Matt Curcio wrote:

> 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

Did you try the code I gave in my last post? Trying it out on this
example, we have:

gr={1 -> 2, 2 -> 3, 3 -> 1, 3 -> 4, 5 -> 6,   6 -> 5}

In[9]:=
StrongComponents[Join[gr, Reverse /@ gr]]
Out[9]=
{{1, 2, 3, 4}, {5, 6}}

This isn't quite what you asked for, but it's close.

Carl Woll
Wolfram Research

>
>
>
> 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: Re: DownValues and Cases
• Next by Date: Re: GraphPlot
• Previous by thread: Re: GraphPlot
• Next by thread: Re: GraphPlot