1

I would like to know how I can create a color legend as shown in the figure.

\definecolor{BrightGreen}{rgb}{0.4, 1.0, 0.0}

\begin{tikzpicture}[scale = 0.7] \tikzset{roundnode/.style = {thick, draw = black, fill = black, outer sep = 1.5, circle, minimum size = 2pt, scale = 0.75}}

%%%%%%%%% Nodes %%%%%%%%%
\node[roundnode = black, label = left: {$s$}] (s) at (2, 9){}; \node[roundnode = black, label = left: {$t$}] (t) at (2, 7){};

\node[roundnode = black, label = left: {$C_1$}] (c1) at (2, 5){}; \node[roundnode = black, label = left: {$C_2$}] (c2) at (2, 3){}; \node[roundnode = black, label = left: {$C_3$}] (c3) at (2, 1){};

\node[roundnode = black, label = right: {$v_1$}] (v1) at (10, 8){}; \node[roundnode = black, label = right: {$v_2$}] (v2) at (10, 6){}; \node[roundnode = black, label = right: {$v_3$}] (v3) at (10, 4){}; \node[roundnode = black, label = right: {$v_4$}] (v4) at (10, 2){};

%%%%%%%%% Edges %%%%%%%%%
\draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v3); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (t) to node[left, above, sloped]{}(v1); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v4);

\draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (c1) to node[left, above, sloped]{}(v3); \draw[Plum, very thick] (c1) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (c2) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v3); \draw[BrightGreen, very thick] (c2) to node[left, above, sloped]{}(v4);

\draw[BurntOrange, very thick] (c3) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (c3) to node[left, above, sloped]{}(v4); \end{tikzpicture}

enter image description here

TobiBS
  • 5,240

2 Answers2

4

Another method using \matrix.

\documentclass[tikz,border=0.5cm]{standalone}

\begin{document} \definecolor{BrightGreen}{rgb}{0.4, 1.0, 0.0}

\tikzset{ Cerulean/.style={green}, Red/.style={red}, Plum/.style={gray}, BurntOrange/.style={orange}, % pics/legend line/.style={ % /tikz/anchor=center, % code={ % \draw[yshift=.5ex,thick,#1] (0, 0) -- (0.6, 0); % } % }, legend line/.pic={ \draw[yshift=.5ex,thick,#1] (0, 0) -- (0.6, 0); }, legend area/.pic={ \draw[yshift=.5ex,fill=#1] (0, -0.2) rectangle (0.6, 0.2); } }

\begin{tikzpicture}[scale = 0.7] \tikzset{roundnode/.style = {thick, draw = black, fill = black, outer sep = 1.5, circle, minimum size = 2pt, scale = 0.75}}

%%%%%%%%% Nodes %%%%%%%%%
\node[roundnode = black, label = left: {$s$}] (s) at (2, 9){}; \node[roundnode = black, label = left: {$t$}] (t) at (2, 7){};

\node[roundnode = black, label = left: {$C_1$}] (c1) at (2, 5){}; \node[roundnode = black, label = left: {$C_2$}] (c2) at (2, 3){}; \node[roundnode = black, label = left: {$C_3$}] (c3) at (2, 1){};

\node[roundnode = black, label = right: {$v_1$}] (v1) at (10, 8){}; \node[roundnode = black, label = right: {$v_2$}] (v2) at (10, 6){}; \node[roundnode = black, label = right: {$v_3$}] (v3) at (10, 4){}; \node[roundnode = black, label = right: {$v_4$}] (v4) at (10, 2){};

%%%%%%%%% Edges %%%%%%%%%
\draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v3); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (t) to node[left, above, sloped]{}(v1); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v4);

\draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (c1) to node[left, above, sloped]{}(v3); \draw[Plum, very thick] (c1) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (c2) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v3); \draw[BrightGreen, very thick] (c2) to node[left, above, sloped]{}(v4);

\draw[BurntOrange, very thick] (c3) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (c3) to node[left, above, sloped]{}(v4);

\begin{scope}[xshift=12cm,yshift=2cm] \end{scope} \matrix [column sep=2mm, draw, anchor=west, xshift=1cm] at (v2 |- c3){ \pic {legend line=Cerulean}; & \node {$C_1$}; & \pic {legend line=Red}; & \node {$C_5$}; \ \pic {legend line=Plum}; & \node {$C_2$}; & \pic {legend area=orange}; & \node {$C_6$}; \ \pic {legend line=brown}; & \node {$C_3$}; & &\ \pic {legend line=blue}; & \node {$C_4$}; & &\ }; \end{tikzpicture} \end{document}

enter image description here

ZhiyuanLck
  • 4,516
3

If you are happy with manually formatting everything, you could use this approach:

\documentclass[tikz,border=0.5cm]{standalone}

\begin{document} \definecolor{BrightGreen}{rgb}{0.4, 1.0, 0.0}

\tikzset{Cerulean/.style={green},Red/.style={red},Plum/.style={gray},BurntOrange/.style={orange},legend/.style={right,black}}

\begin{tikzpicture}[scale = 0.7] \tikzset{roundnode/.style = {thick, draw = black, fill = black, outer sep = 1.5, circle, minimum size = 2pt, scale = 0.75}}

%%%%%%%%% Nodes %%%%%%%%%
\node[roundnode = black, label = left: {$s$}] (s) at (2, 9){}; \node[roundnode = black, label = left: {$t$}] (t) at (2, 7){};

\node[roundnode = black, label = left: {$C_1$}] (c1) at (2, 5){}; \node[roundnode = black, label = left: {$C_2$}] (c2) at (2, 3){}; \node[roundnode = black, label = left: {$C_3$}] (c3) at (2, 1){};

\node[roundnode = black, label = right: {$v_1$}] (v1) at (10, 8){}; \node[roundnode = black, label = right: {$v_2$}] (v2) at (10, 6){}; \node[roundnode = black, label = right: {$v_3$}] (v3) at (10, 4){}; \node[roundnode = black, label = right: {$v_4$}] (v4) at (10, 2){};

%%%%%%%%% Edges %%%%%%%%%
\draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v3); \draw[Cerulean, very thick] (s) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (t) to node[left, above, sloped]{}(v1); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (t) to node[left, above, sloped]{}(v4);

\draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c1) to node[left, above, sloped]{}(v2); \draw[Red, very thick] (c1) to node[left, above, sloped]{}(v3); \draw[Plum, very thick] (c1) to node[left, above, sloped]{}(v4);

\draw[Red, very thick] (c2) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c2) to node[left, above, sloped]{}(v3); \draw[BrightGreen, very thick] (c2) to node[left, above, sloped]{}(v4);

\draw[BurntOrange, very thick] (c3) to node[left, above, sloped]{}(v1); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v2); \draw[Cerulean, very thick] (c3) to node[left, above, sloped]{}(v3); \draw[Red, very thick] (c3) to node[left, above, sloped]{}(v4);

\begin{scope}[xshift=12cm,yshift=2cm]

\draw[Cerulean] (0,0) -- ++(1,0)node[legend]{$C_1$}; \draw[Red] (0,-0.5) -- ++(1,0)node[legend]{$C_2$}; \draw[Plum] (0,-1.0) -- ++(1,0)node[legend]{$C_3$}; \draw[BurntOrange] (0,-1.5) -- ++(1,0)node[legend]{$C_4$};

\draw[] (2,0) -- ++(1,0)node[legend]{$C_5$}; \node[fill=yellow,draw=black] at (2.5,-0.5) {}; \node[legend] at (3,-0.5) {$C_6$};

\draw (-0.5,0.5) rectangle (4.5,-2);

\end{scope} \end{tikzpicture} \end{document}

It results in:

enter image description here

PGFplots provides formatting a legend, but then you would have to define styles through its mechanism.

TobiBS
  • 5,240