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