1
$\begingroup$

I've unsuccessfully tried many ways of converting polygon points into a graph using Mathematica 7, and I am frustrated. I looked at this post, but it doesn't work:

Needs["Combinatorica`"];
crds = {{1, 10}, {2, 4}, {10, 5}, {20, 10}};
vertices = Range[Length[crds]];
edges = Thread[vertices \[DirectedEdge] RotateLeft[vertices]];

Graph[vertices, edges]

produces errors:

Syntax::sntxf: "\!\(\*StyleBox[\"\\\"\\\\\\\"\\\"\", \"MT\"]\)\!\(\*StyleBox[\!
\(vertices\), \"MT\"]\)\!\(\*StyleBox[\"\\\"\\\\\\\" cannot be followed by \\\\\\\"
\\\"\", \"MT\"]\)\!\(\*StyleBox[\!\(\(\(\\[ DirectedEdge]\)\) \(\(RotateLeft[vertices]
\)\)\), \"MT\"]\)\!\(\*StyleBox[\"\\\"\\\\\\\".\\\"\", \"MT\"]\)\!\(\*StyleBox[\!
\(\"\"\), \"MT\"]\)"

Syntax::tsntxi: "\!\(\*StyleBox[\"\\\"\\\\\\\"\\\"\", \"MT\"]\)\!\(\*StyleBox[\!\(\\[ 
DirectedEdge]\), \"MT\"]\)\!\(\*StyleBox[\"\\\"\\\\\\\" is incomplete; more input is 
needed.\\\"\", \"MT\"]\)\!\(\*StyleBox[\!\(\"\"\), \"MT\"]\)"

Syntax::sntxi: Incomplete expression; more input is needed.

Any ideas?

$\endgroup$
1
  • $\begingroup$ The syntax of Graph in Combinatorica is Graph[e, v, opts], not Graph[v, e] as with the new built-in Graph. $\endgroup$
    – William
    Commented May 22, 2013 at 20:09

2 Answers 2

5
$\begingroup$

With Combinatorica, you should usually use MakeGraph rather than Graph directly. Here are some expressions that create the graph you want and which can be easily adapted for use with any graph that you've defined appropriate vertices and edges symbols for:

Needs["Combinatorica`"]
crds = {{1, 10}, {2, 4}, {10, 5}, {20, 10}};
vertices = Range[Length[crds]];
edges = Thread[vertices -> RotateLeft[vertices]];
g = MakeGraph[vertices, MemberQ[edges, #1 -> #2] &]
ShowGraph@g
$\endgroup$
2
  • $\begingroup$ same errors as above $\endgroup$
    – jnthn
    Commented May 22, 2013 at 20:36
  • $\begingroup$ @jnthn: Interesting, I think I missed the errors because I was working in 9.0.1. My apologies, as I did have access to 7.0 for testing. Glad that I was able to help. $\endgroup$
    – William
    Commented May 23, 2013 at 1:21
0
$\begingroup$
Needs["Combinatorica`"];
crds = {{1, 10}, {2, 4}, {10, 5}, {20, 10}}
vertices = Range[Length[crds]]; edges = 
Thread[vertices -> RotateLeft[vertices]];
GraphPlot[edges]
$\endgroup$
1
  • 1
    $\begingroup$ In[]:= Head[GraphPlot[e] Out[]:= Graphics, so it is not a graph. I cant use Degrees[] on it. $\endgroup$
    – jnthn
    Commented May 22, 2013 at 20:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.