Graph Drawing in Ti k Z Till Tantau Graph Drawing Conference 2012 - - PowerPoint PPT Presentation

graph drawing in ti k z
SMART_READER_LITE
LIVE PREVIEW

Graph Drawing in Ti k Z Till Tantau Graph Drawing Conference 2012 - - PowerPoint PPT Presentation

Graph Drawing in Ti k Z Till Tantau Graph Drawing Conference 2012 The Problem: Integrating Graph Drawings Into Documents 3 5 6 7 8 9 2 4 f 1 f 2 h 3 h f 6 c 2 h 4 p f 3 c 1 h 1 h h 2 f 5 f 4 1 5 6 3 0 1 2 4 (b) A realization


slide-1
SLIDE 1

Graph Drawing in TikZ

Till Tantau

Graph Drawing Conference 2012

slide-2
SLIDE 2

The Problem: Integrating Graph Drawings Into Documents

f1 f2 f3 f4 f5 f6

h

p 1 6 5 4 2 3 (b) A realization of p. nal arc can reduce the crossings

constraints, are restricted to the

1 2 6 8 9 7 5 3 4 h2 h4 h3 h1 c2 c1

(a)

  • g. 3. Steps towards a final layout: (a) t

UPR R, (b) fine-layering of the subgraph arcs

Till Tantau GD 2012 2 / 17

slide-3
SLIDE 3

The Problem: Integrating Graph Drawings Into Documents

GraphViz yields

INTEGRAL exp dx . 2pi + x r

T EX yields

  • exp

· 2π + x r dx

Till Tantau GD 2012 2 / 17

slide-4
SLIDE 4

The Problem: Integrating Graph Drawings Into Documents

GraphViz yields

INTEGRAL exp dx . 2pi + x r

T EX yields

  • exp

· 2π + x r dx

What we actually want:

  • exp

· 2π + x r dx

Till Tantau GD 2012 2 / 17

slide-5
SLIDE 5

A Solution: Graph Drawing in TikZ

Take an existing document description language (T EX) with an embedded graphics description language (TikZ). Add options and syntactic extensions for specifying graphs easily. Run graph drawing algorithms as part of the document processing. Advantages + Styling of nodes and edges matches main document. + Graph drawing algorithms know size of nodes and labels precisely. + No external programs needed. + Algorithm designers can concentrate on algorithmic aspects.

Till Tantau GD 2012 3 / 17

slide-6
SLIDE 6

Talk Outline

How Do I Use It? How Does It Work? How Do I Implementing An Algorithm?

Till Tantau GD 2012 4 / 17

slide-7
SLIDE 7

TikZ in a Nutshell: The Idea

\usepackage{tikz} ... A circle like \tikz { \fill[red] (0,0) circle[radius=.5ex]; } is round.

A circle like is round.

TikZ is a package of T EX-macros for specifying graphics. The macros transform highlevel descriptions of graphics into lowlevel PDF-, PostScript-, or SVG-primitives during a T EX run.

Till Tantau GD 2012 5 / 17

slide-8
SLIDE 8

TikZ in a Nutshell: Nodes and Edges

\tikz { \node (a) at (0,2) [rounded rectangle] {Hello}; \node (b) at (2,2) [tape] {World}; \node (c) at (4,2) [circle, dashed] {$ c^2 $}; \node (d) at (4,0) [diamond] {$ \delta $}; \draw (a) edge[->] (b) (b) edge[->] (c) (b) edge[->] (d) (d) edge[->] (a); }

Hello World c2 δ

Till Tantau GD 2012 6 / 17

slide-9
SLIDE 9

Using the Graph Drawing System = Adding an Option

\usetikzlibrary{graphdrawing.layered} ... \tikz [layered layout] { \node (a) at (0,1) [rounded rectangle] {Hello}; \node (b) at (2,1) [tape] {World}; \node (c) at (4,1) [circle, dashed] {$ c^2 $}; \node (d) at (4,0) [diamond] {$ \delta $}; \draw (a) edge[->] (b) (b) edge[->] (c) (b) edge[->] (d) (d) edge[->] (a); }

Hello World c2 δ

Till Tantau GD 2012 7 / 17

slide-10
SLIDE 10

Using the Graph Drawing System = Adding an Option

\usetikzlibrary{graphdrawing.force} ... \tikz [spring layout, node distance=1.25cm] { \node (a) at (0,1) [rounded rectangle] {Hello}; \node (b) at (2,1) [tape] {World}; \node (c) at (4,1) [circle, dashed] {$ c^2 $}; \node (d) at (4,0) [diamond] {$ \delta $}; \draw (a) edge[->] (b) (b) edge[->] (c) (b) edge[->] (d) (d) edge[->] (a); }

Hello World c2 δ

Till Tantau GD 2012 7 / 17

slide-11
SLIDE 11

A Concise Syntax for Graphs

A concise syntax for graphs is important when humans specify graphs ‘‘by hand.’’ The chosen syntax mixes the philosophies of DOT and TikZ.

\tikz \graph [layered layout] { Hello -> World -> "$c^2$"; World -> "$\delta$" -> Hello; };

Hello World c2 δ

Till Tantau GD 2012 8 / 17

slide-12
SLIDE 12

Key Features of TikZ’s Syntax for Graphs

Node options follow nodes in square brackets. Edge options follow edges in square brackets. Additonal edge kinds. Natural specification of trees.

\tikz \graph [layered layout] { Hello [rounded rectangle]

  • >

World [tape]

  • >

"$c^2$" [circle, dashed]; World -> "$\delta$"[diamond]

  • >

Hello; };

Hello World c2 δ

Till Tantau GD 2012 9 / 17

slide-13
SLIDE 13

Key Features of TikZ’s Syntax for Graphs

Node options follow nodes in square brackets. Edge options follow edges in square brackets. Additonal edge kinds. Natural specification of trees.

\tikz \graph [layered layout] { Hello [rounded rectangle]

  • >

World [tape]

  • >

"$c^2$" [circle, dashed]; World

  • >[dashed, blue] "$\delta$"[diamond]
  • >[bend right, "foo"’] Hello;

};

foo Hello World c2 δ

Till Tantau GD 2012 9 / 17

slide-14
SLIDE 14

Key Features of TikZ’s Syntax for Graphs

Node options follow nodes in square brackets. Edge options follow edges in square brackets. Additonal edge kinds. Natural specification of trees.

\tikz \graph [tree layout] { a -> b -- c <- d <-> e; };

a b c d e

Till Tantau GD 2012 9 / 17

slide-15
SLIDE 15

Key Features of TikZ’s Syntax for Graphs

Node options follow nodes in square brackets. Edge options follow edges in square brackets. Additonal edge kinds. Natural specification of trees.

\tikz \graph [binary tree layout] { root -> { left -> { 1, 2 }, right -> { 3 -> { , 4 } } } };

root left 1 2 right 3 4

Till Tantau GD 2012 9 / 17

slide-16
SLIDE 16

Talk Outline

How Do I Use It? How Does It Work? How Do I Implementing An Algorithm?

Till Tantau GD 2012 10 / 17

slide-17
SLIDE 17

LuaT EX in a Nutshell

T EX is great, . . . but implementing advanced algorithms is next to impossible. Lua is a small, simple, elegant language, . . . . . . that has been integrated into modern versions of T EX:

$\sum_{n=1}^{100} n = \directlua{ local sum = 0 for i=1,100 do sum = sum + i end tex.print(sum) }$

100

n=1 n = 5050

Till Tantau GD 2012 11 / 17

slide-18
SLIDE 18

How a Graph is Drawn

TikZ Layer \graph[tree layout]{ a -> b -> c }; node positioning callback edge positioning callback Lua Layer beginGraphDrawingScope(...) addNode(...) addEdge(...) runGraphDrawingAlgorithm() load algorithm and run it endGraphDrawingScope()

Till Tantau GD 2012 12 / 17

slide-19
SLIDE 19

Talk Outline

How Do I Use It? How Does It Work? How Do I Implementing An Algorithm?

Till Tantau GD 2012 13 / 17

slide-20
SLIDE 20

‘‘Graph Drawing’’ can be seen as. . .

starting with a graph, . . . . . . applying a series of transformations to it. . . . . . and ending with a drawn graph. Graph drawing in TikZ follows this philosophy: Algorithms declare what kind of graphs they expect and also the properties of the graphs they produce.

Till Tantau GD 2012 14 / 17

slide-21
SLIDE 21

Implementing a New Graph Drawing Algorithm

  • - File VerySimpleDemo.lua

local VerySimpleDemo = pgf.gd.new_algorithm_class { works_only_on_connected_graphs = true, } function VerySimpleDemo:run() local graph = self.ugraph -- The graph model local radius = graph.options[’/graph drawing/radius’] local alpha = (2*math.pi) / #graph.vertices

  • - Iterate over all vertices:

for i,vertex in ipairs(graph.vertices) do vertex.pos.x = math.cos(i*alpha) * radius vertex.pos.y = math.sin(i*alpha) * radius end end return VerySimpleDemo -- This return is a quirk of Lua

Till Tantau GD 2012 15 / 17

slide-22
SLIDE 22

Using the Graph Drawing Algorithm

\tikz \graph [ layout=VerySimpleDemo, radius=1cm] { a -- b -- c -- a; d -- e; f -- g -- h -- d -- f; e -- g; };

a b c d e f g h

Till Tantau GD 2012 16 / 17

slide-23
SLIDE 23

Using the Graph Drawing Algorithm

\tikz \graph [ layout=VerySimpleDemo, radius=1cm] { a --[orient=right] b -- c -- a; d -- e; f -- g -- h -- d -- f; e -- g; };

a b c d e f g h

Till Tantau GD 2012 16 / 17

slide-24
SLIDE 24

Using the Graph Drawing Algorithm

\tikz \graph [ layout=VerySimpleDemo, radius=1cm] a --[orient=right] b -- c -- a; d -- e; f -- g -- h -- d --[stub,red] f; e --[stub, red] g; };

a b c d e f g h

Till Tantau GD 2012 16 / 17

slide-25
SLIDE 25

Using the Graph Drawing Algorithm

\tikz \graph [ layout=VerySimpleDemo, radius=1cm, nodes={circle, fill=..., ...}, edges={circle connection bar, ...}] { a --[orient=right] b -- c -- a; d -- e; f -- g -- h -- d -- f; e -- g; };

a b c d e f g h

Till Tantau GD 2012 16 / 17

slide-26
SLIDE 26

Conclusion

Graph drawing in TikZ is aimed at users who want to draw graphs with up to ≈ 100 nodes inside T EX documents and researchers who want to implement new algorithms. Already implemented algorithms: Reingold–Tilford tree drawing. Layered Sugiyama method. Multi-level force-based algorithms. Available as part of (the development version of) TikZ.

Till Tantau GD 2012 17 / 17