I would like to illustrate properties of binary relation on a graph G(V,E), where V={a,b,c,d,e} and E={aa,ab,ac,bb,bc,bd…}

Going through documentation and examples I tried several different approaches, however none of results was exactly satisfactory. Most elegant attempt is probably this one, yet it still does not produce complete solution:

\tikz \graph [simple] {
    subgraph K_n [->,n=5, clockwise];
    % Redirect edges:
    1 <- 4;
    1 <- 5;
    2 <- 5;
    2 <- 1;
    3 <- 1;
    3 <- 2;
    4 <- 2;
    4 <- 3;
    5 <- 3;
    5 <- 4;

Can I

  • rename vertices to a,b,c,d,e,
  • add loop to each node to illustrate reflexivity?

Another almost working attempt producing badly skewed graph:

\begin{tikzpicture}[node distance=3cm,gnode/.style={circle,draw,font=\bfseries}]
    \node[gnode](d) {d};
    \node[gnode](c) [right of=d] {c};
    \node[gnode](e) [above left of=d] {e};
    \node[gnode](b) [above right of=c] {b};
    \node[gnode](a) [above right of=e] {a};
        (a) -> {(b),(c)};
        (b) -> {(c),(d)};
        (c) -> {(d),(e)};
        (d) -> {(e),(a)};
        (e) -> {(a),(b)};
        (a) edge [loop above] node {} (a)
        (b) edge [loop right] node {} (b)
        (c) edge [loop below] node {} (c)
        (d) edge [loop below] node {} (d)
        (e) edge [loop left] node {} (e);
  • What do you mean by almost complete? It is complete right?
    – Symbol 1
    Mar 23, 2015 at 0:13
  • @Symbol1 binary relation R it is describing is defined like this: aRa, aRb, aRc, bRb, bRc, bRd, cRc, cRd, cRe … eRe, eRa, eRb. This R relation is represented by oriented edge in the graph, so it looks like K₅ with oriented edges and loop added at each vertex.
    – Mr. Tao
    Mar 23, 2015 at 0:20
  • Oops, I got it. Well, there is \foreach in TikZ. And there is 1/a-syntax so that 1 becomes the name and a becomes the label.
    – Symbol 1
    Mar 23, 2015 at 0:29
  • 1
    @Symbol1: Indeed! This produces acceptable graph: \foreach \name/\angle/\text in {P-1/234/d, P-2/162/e, P-3/90/a, P-4/18/b, P-5/-54/c} \node[vertex,xshift=6cm,yshift=.5cm] (\name) at (\angle:1cm) {$\text$}; \foreach \from/\to in {1/2,2/3,3/4,4/5,5/1,1/3,2/4,3/5,4/1,5/2} { \draw (P-\from) -- (P-\to); } \foreach \from/\pos in {1/below,2/left,3/above,4/right,5/below} { \path (P-\from) edge[loop \pos] node {} (P-\from); }
    – Mr. Tao
    Mar 23, 2015 at 1:05
  • You can/are encourages to answer your own question. You can also include a snapshot to make it more beginner-friendly.
    – Symbol 1
    Mar 23, 2015 at 2:19

1 Answer 1


Inspired by Symbol1’s comment I went through graphs in TikZ gallery where the Automata example provided almost complete solution. Below is slightly tweaked code and resulting graph.



\begin{tikzpicture}[shorten >=1pt,->]
    \tikzstyle{vertex}=[circle,draw=black!25,minimum size=17pt,inner sep=0pt]

    \foreach \name/\angle/\text in {P-1/234/d, P-2/162/e, P-3/90/a, P-4/18/b, P-5/-54/c}
        \node[vertex,xshift=6cm,yshift=.5cm] (\name) at (\angle:1cm) {$\text$};

    \foreach \from/\to in {1/2,2/3,3/4,4/5,5/1,1/3,2/4,3/5,4/1,5/2}
        { \draw (P-\from) -- (P-\to); }

    \foreach \from/\pos in {1/below,2/left,3/above,4/right,5/below}
        { \path (P-\from) edge[loop \pos] node {} (P-\from); }


relation represented as graph

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .