summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.force.code.tex
blob: cd6851466a356bd27a568c75f31eb4ad7472b3e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
% Copyright 2011 by Jannis Pohlmann
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.

\ProvidesFileRCS{pgflibrarygraphdrawing.force.code.tex}



\usepgflibrary{graphdrawing}

\usegdlibrary{force}

\endinput



%
% Definition of spring algorithms as well as options to configure them.
%

\pgfgdset{
  force based/.cd,
  %
  iterations/.graph parameter=number,
  iterations/.parameter initial=500,
  %
  cooling factor/.graph parameter=number,
  cooling factor/.parameter initial=0.95,
  %
  initial step dimension/.graph parameter=number,
  initial step dimension/.parameter initial=0,
  %
  convergence tolerance/.graph parameter=number,
  convergence tolerance/.parameter initial=0.01,
  %
  spring constant/.graph parameter=number,
  spring constant/.parameter initial=0.01,
  %
  approximate electric forces/.graph parameter=boolean,
  approximate electric forces/.parameter initial=false,
  approximate electric forces/.default=true,
  %
  electric force order/.graph parameter=number,
  electric force order/.parameter initial=1,
  %
  % Parameters related to the multilevel approach where the input graph
  % is iteratively coarsened into graphs with fewer nodes, until either
  % the number of nodes is small enough or the number of nodes in the
  % could not be reduced by at least a user-defined ratio.
  %
  coarsen/.graph parameter=boolean,
  coarsen/.parameter initial=true,
  coarsen/.default=true,
  %
  coarsening/.code=\pgfkeys{
    /graph drawing/force based/coarsening/.cd,
    #1
  },
  %
  coarsening/downsize ratio/.graph parameter=number,
  coarsening/downsize ratio/.parameter initial=0.25,
  %
  coarsening/minimum graph size/.graph parameter=number,
  coarsening/minimum graph size/.parameter initial=2,
  %
  coarsening/collapse independent edges/.graph parameter=boolean,
  coarsening/collapse independent edges/.parameter initial=true,
  coarsening/collapse independent edges/.default=true,
  %
  coarsening/connect independent nodes/.graph parameter=boolean,
  coarsening/connect independent nodes/.parameter initial=false,
  coarsening/connect independent nodes/.default=true,
  %
  % Node parameters for spring algorithms.
  %
  %
  % Edge parameters for spring algorithms.
  %
}

\pgfgddeclareforwardedkeys{/graph drawing}{
  %
  electric charge/.node parameter=number,
  electric charge/.parameter initial=1,
}


%
% Spring algorithm based on the paper
%
%   "Efficient, High-Quality Force-Directed Graph Drawing"
%   Yifan Hu, 2006
%
\pgfgddeclarealgorithmkey
  {spring layout}
  {force based}
  {
    algorithm=pgf.gd.force.SpringHu2006
  }


%
% Spring-electrical algorithm based on the paper
%
%   "Efficient, High-Quality Force-Directed Graph Drawing"
%   Yifan Hu, 2006
%
\pgfgddeclarealgorithmkey
  {spring electrical layout}
  {force based}
  {
    algorithm=pgf.gd.force.SpringElectricalHu2006,
    force based/spring constant=0.2,
  }



%
% Spring-electrical algorithm based on the paper
%
%   "A Multilevel Algorithm for Force-Directed Graph Drawing"
%   C. Walshaw, 2000
%
\pgfgddeclarealgorithmkey
  {spring electrical layout'}
  {force based}
  {
    algorithm=pgf.gd.force.SpringElectricalWalshaw2000,
    force based/spring constant=0.01,
    force based/convergence tolerance=0.001,
  }