COIN-OR::LEMON - Graph Library

source: lemon-0.x/demo/graph_to_eps_demo.cc @ 1637:9d64d5672b88

Last change on this file since 1637:9d64d5672b88 was 1630:f67737f5727a, checked in by Alpar Juttner, 19 years ago

Doc changes:

  • True and False got documented
  • Graph "developper interface" documentation switched off
  • minor fix in graph_to_eps_demo.cc
File size: 6.1 KB
Line 
1/* -*- C++ -*-
2 * demo/graph_to_eps.cc - Part of LEMON, a generic C++ optimization library
3 *
4 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
5 * (Egervary Research Group on Combinatorial Optimization, EGRES).
6 *
7 * Permission to use, modify and distribute this software is granted
8 * provided that this copyright notice appears in all copies. For
9 * precise terms see the accompanying LICENSE file.
10 *
11 * This software is provided "AS IS" with no warranty of any kind,
12 * express or implied, and with no claim as to its suitability for any
13 * purpose.
14 *
15 */
16
17/// \ingroup demos
18/// \file
19/// \brief Demo of the graph grawing function \ref graphToEps()
20///
21/// This demo program shows examples how to  use the function \ref
22/// graphToEps(). It takes no input but simply creates  six
23/// <tt>.eps</tt> files demonstrating the capability of \ref
24/// graphToEps(), and showing how to draw directed/undirected graphs,
25/// how to handle parallel egdes, how to change the properties (like
26/// color, shape, size, title etc.) of nodes and edges individually
27/// using appropriate \ref maps-page "graph maps".
28
29#include <cmath>
30
31#include<lemon/graph_to_eps.h>
32#include<lemon/list_graph.h>
33
34using namespace std;
35using namespace lemon;
36
37int main()
38{
39  ColorSet colorSet;
40
41  ListGraph g;
42  typedef ListGraph::Node Node;
43  typedef ListGraph::NodeIt NodeIt;
44  typedef ListGraph::Edge Edge;
45  typedef xy<int> Xy;
46 
47  Node n1=g.addNode();
48  Node n2=g.addNode();
49  Node n3=g.addNode();
50  Node n4=g.addNode();
51  Node n5=g.addNode();
52
53  ListGraph::NodeMap<Xy> coords(g);
54  ListGraph::NodeMap<double> sizes(g);
55  ListGraph::NodeMap<int> colors(g);
56  ListGraph::NodeMap<int> shapes(g);
57  ListGraph::EdgeMap<int> ecolors(g);
58  ListGraph::EdgeMap<int> widths(g);
59 
60  coords[n1]=Xy(50,50);  sizes[n1]=1; colors[n1]=1; shapes[n1]=0;
61  coords[n2]=Xy(50,70);  sizes[n2]=2; colors[n2]=2; shapes[n2]=2;
62  coords[n3]=Xy(70,70);  sizes[n3]=1; colors[n3]=3; shapes[n3]=0;
63  coords[n4]=Xy(70,50);  sizes[n4]=2; colors[n4]=4; shapes[n4]=1;
64  coords[n5]=Xy(85,60);  sizes[n5]=3; colors[n5]=5; shapes[n5]=2;
65 
66  Edge e;
67
68  e=g.addEdge(n1,n2); ecolors[e]=0; widths[e]=1;
69  e=g.addEdge(n2,n3); ecolors[e]=0; widths[e]=1;
70  e=g.addEdge(n3,n5); ecolors[e]=0; widths[e]=3;
71  e=g.addEdge(n5,n4); ecolors[e]=0; widths[e]=1;
72  e=g.addEdge(n4,n1); ecolors[e]=0; widths[e]=1;
73  e=g.addEdge(n2,n4); ecolors[e]=1; widths[e]=2;
74  e=g.addEdge(n3,n4); ecolors[e]=2; widths[e]=1;
75 
76  IdMap<ListGraph,Node> id(g);
77
78  cout << "Create 'graph_to_eps_demo_out.eps'" << endl;
79  graphToEps(g,"graph_to_eps_demo_out.eps").scale(10).coords(coords).
80    title("Sample .eps figure").
81    copyright("(C) 2005 LEMON Project").
82    nodeScale(2).nodeSizes(sizes).
83    nodeShapes(shapes).
84    nodeColors(composeMap(colorSet,colors)).
85    edgeColors(composeMap(colorSet,ecolors)).
86    edgeWidthScale(.4).edgeWidths(widths).
87    nodeTexts(id).nodeTextSize(3).
88    run();
89
90
91  cout << "Create 'graph_to_eps_demo_out_arr.eps'" << endl;
92  graphToEps(g,"graph_to_eps_demo_out_arr.eps").scale(10).
93    title("Sample .eps figure (with arrowheads)").
94    copyright("(C) 2005 LEMON Project").
95    nodeColors(composeMap(colorSet,colors)).
96    coords(coords).
97    nodeScale(2).nodeSizes(sizes).
98    nodeShapes(shapes).
99    edgeColors(composeMap(colorSet,ecolors)).
100    edgeWidthScale(.4).edgeWidths(widths).
101    nodeTexts(id).nodeTextSize(3).
102    drawArrows().arrowWidth(1).arrowLength(1).
103    run();
104
105  e=g.addEdge(n1,n4); ecolors[e]=2; widths[e]=1;
106  e=g.addEdge(n4,n1); ecolors[e]=1; widths[e]=2;
107
108  e=g.addEdge(n1,n2); ecolors[e]=1; widths[e]=1;
109  e=g.addEdge(n1,n2); ecolors[e]=2; widths[e]=1;
110  e=g.addEdge(n1,n2); ecolors[e]=3; widths[e]=1;
111  e=g.addEdge(n1,n2); ecolors[e]=4; widths[e]=1;
112  e=g.addEdge(n1,n2); ecolors[e]=5; widths[e]=1;
113  e=g.addEdge(n1,n2); ecolors[e]=6; widths[e]=1;
114  e=g.addEdge(n1,n2); ecolors[e]=7; widths[e]=1;
115
116  cout << "Create 'graph_to_eps_demo_out_par.eps'" << endl;
117  graphToEps(g,"graph_to_eps_demo_out_par.eps").scale(10).
118    title("Sample .eps figure (parallel edges)").
119    copyright("(C) 2005 LEMON Project").
120    nodeShapes(shapes).
121    coords(coords).
122    nodeScale(2).nodeSizes(sizes).
123    nodeColors(composeMap(colorSet,colors)).
124    edgeColors(composeMap(colorSet,ecolors)).
125    edgeWidthScale(.4).edgeWidths(widths).
126    nodeTexts(id).nodeTextSize(3).
127    enableParallel().parEdgeDist(1.5).
128    run();
129 
130  cout << "Create 'graph_to_eps_demo_out_par_arr.eps'" << endl;
131  graphToEps(g,"graph_to_eps_demo_out_par_arr.eps").scale(10).
132    title("Sample .eps figure (parallel edges and arrowheads)").
133    copyright("(C) 2005 LEMON Project").
134    nodeScale(2).nodeSizes(sizes).
135    coords(coords).
136    nodeShapes(shapes).
137    nodeColors(composeMap(colorSet,colors)).
138    edgeColors(composeMap(colorSet,ecolors)).
139    edgeWidthScale(.3).edgeWidths(widths).
140    nodeTexts(id).nodeTextSize(3).
141    enableParallel().parEdgeDist(1).
142    drawArrows().arrowWidth(1).arrowLength(1).
143    run();
144
145  cout << "Create 'graph_to_eps_demo_out_a4.eps'" << endl;
146  graphToEps(g,"graph_to_eps_demo_out_a4.eps").scaleToA4().
147    title("Sample .eps figure (fits to A4)").
148    copyright("(C) 2005 LEMON Project").
149    nodeScale(2).nodeSizes(sizes).
150    coords(coords).
151    nodeShapes(shapes).
152    nodeColors(composeMap(colorSet,colors)).
153    edgeColors(composeMap(colorSet,ecolors)).
154    edgeWidthScale(.3).edgeWidths(widths).
155    nodeTexts(id).nodeTextSize(3).
156    enableParallel().parEdgeDist(1).
157    drawArrows().arrowWidth(1).arrowLength(1).
158    run();
159
160  ListGraph h;
161  ListGraph::NodeMap<int> hcolors(h);
162  ListGraph::NodeMap<Xy> hcoords(h);
163 
164  int cols=int(sqrt(double(colorSet.size())));
165  for(int i=0;i<int(colorSet.size());i++) {
166    Node n=h.addNode();
167    hcoords[n]=Xy(i%cols,i/cols);
168    hcolors[n]=i;
169  }
170 
171  cout << "Create 'graph_to_eps_demo_out_colors.eps'" << endl;
172  graphToEps(h,"graph_to_eps_demo_out_colors.eps").scale(60).
173    title("Sample .eps figure (ColorSet demo)").
174    copyright("(C) 2005 LEMON Project").
175    coords(hcoords).
176    nodeScale(.45).
177    distantColorNodeTexts().
178    //    distantBWNodeTexts().
179    nodeTexts(hcolors).nodeTextSize(.6).
180    nodeColors(composeMap(colorSet,hcolors)).
181    run();
182
183
184}
Note: See TracBrowser for help on using the repository browser.