For one of my previous posts, I needed some images of graphs. Initially I have taught, that I will just draw them in Inkscape or some other tool, but after a while I have decided to do something more clever – which might maybe serve me in the future – draw the graphs in Latex. After a quick search I have found this blog:
http://graphtheoryinlatex.wordpress.com/ and older posts from the same author: http://graphtheoryinlatex.blogspot.com/
This blog is about drawing graphs in TeX. So what do you need:
TikZ – a graphic system for Tex
Tkz-graph – style with basic graph drawing macros.
Tkz-berge – style with more complex drawing – such as predefined graphs (full graphs, bipartite graphs, grids etc.)
Some TeX editor. I am using Inlage. Which is not expensive and takes care for downloading all the necessary packages.
So here are the graphs and variants which I have used in the previous post:
Graph with 4 edges in a circle:
\begin{tikzpicture} \GraphInit[vstyle=Welsh] \SetGraphUnit{2} \Vertices{circle}{A,B,C,D} \Edges(A,B,C,D,A,C) \SetVertexNoLabel \end{tikzpicture}
Coloring some of the nodes:
\begin{tikzpicture} \GraphInit[vstyle=Classic] \SetGraphUnit{2} \Vertices{circle}{A,B,C,D} \Edges(A,B,C,D,A,C) \SetVertexNoLabel \AddVertexColor{red}{B,D} \AddVertexColor{green}{A} \AddVertexColor{blue}{C} \end{tikzpicture}
Graph with labeled edges
\begin{tikzpicture}
\GraphInit[vstyle=Welsh]
\SetGraphUnit{2}
\Vertices{circle}{A,B,C,D,E}
\SetUpEdge[style={->}]
\Edges[label=1](A,B)
\Edges[label=1](B,C)
\Edges[label=1](C,D)
\Edges[label=$1$](D,E)
\Edges[label=x1](A,C)
\Edges[label=x2](A,D)
\Edges[label=x3](A,E)
\SetVertexNoLabel
\end{tikzpicture}
Graph with positioned vertices.
Using the EA, NOEA and similar macros (EA = East of first vertex define the second vertex, NOEA = Northeast of…)
\begin{tikzpicture} \SetGraphUnit{2} \GraphInit[vstyle=Normal] \Vertex{S} \NOEA(S){A} \SOEA(S){B} \EA(A){T1} \EA(B){T2} \SOEA(T1){F} \Edges[label=1](S,A) \Edges[label=1](S,B) \Edges[label=4](A,T1) \Edges[label=2](B,T2) \Edges[label=1](T1,F) \Edges[label=1](T2,F) \Edges[style={pos=.25},label=3](A,T2) \Edges[style={pos=.25},label=2](B,T1) %Could use this for bending% \tikzset{EdgeStyle/.append style = {bend left}} \end{tikzpicture}
Bipartite graph using the berge styles:
\begin{tikzpicture}
\grCompleteBipartite[RA=4,RB=3,RS=6]{2}{2}
\end{tikzpicture}
For now I am content that I have found this blog and actually I have to say, that drawing graphs in TeX is much easier than I have expected.
Thank you for this blog post! I was looking for some simple examples of graphs in LaTeX and your article gave me a great start. :)
OdpovědětVymazat