¿Cómo colocar la leyenda en una posición adecuada en el siguiente diagrama de tikz?

¿Cómo colocar la leyenda en una posición adecuada en el siguiente diagrama de tikz?

Tengo el siguiente código para un tikzdiagrama. En lugar de etiquetar todos los bordes individualmente, quiero colocar un cuadro de leyenda para colores similares que representen los bordes. En este diagrama, el cuadro de leyenda contendrá los siguientes elementos

1. red line for value `b` 
2. blue line for value `a`
3. black lines for value `c`. 

Además, ¿cómo puedo cambiar el valor predeterminado?Fondo blancode etiquetas en el decisioncomando paratransparentepara evitar que algunas partes de los bordes se pierdan al superponerse. ¿Alguna ayuda para reducir el código usando otros comandos o tikzpictureentorno?

\documentclass{standalone}
\usepackage{tikz-cd}
\tikzset{SmallNode/.style={draw,inner sep=0pt},%<- add circle here for circle nodes
every edge quotes/.style={fill=white}
}
\begin{document}
\begin{tikzpicture}
\node[SmallNode] (00) at (-0.5,1.5) {$(0,0)$};
\node[SmallNode] (0) at (-0.5,0) {$0$};
\node[SmallNode] (1) at (1,0) {$(1)$};
\node[SmallNode] (2) at (2.5,0) {$(2)$};
\node[SmallNode] (3) at (4.0,0) {$(3)$};
\node[] (4) at (4.8,0) {$\textbf{\dots}$};
\node[SmallNode] (5) at (6,0) {$(y-1)$};
\node[SmallNode] (6) at (8.0,0) {$(y)$};
\node[SmallNode] (7) at (9.9,0) {$(y+1)$};
\node[SmallNode] (8) at (11.9,0) {$(y+2)$};
\node[] (9) at (12.8,0) {$\textbf{\dots}$};
\node[SmallNode] (10) at (11.8,-3) {$(x-b-1)$};
\node[SmallNode] (11) at (8.9,-3) {$(x-b)$};
\node[SmallNode] (12) at (6.2,-3) {$(x-b+1)$};
\node[] (13) at (5.0,-3) {$\textbf{\dots}$};
\node[SmallNode] (14) at (3.8,-3) {$(x-1)$};
\node[SmallNode] (15) at (1.5,-3) {$(x)$};
\node[SmallNode] (16) at (-0.5,-3) {$(x+1)$};
\draw[->,blue] (0) edge ["a",bend left] (00) (00)edge ["a"] (0) ;
\draw[->] (1) edge ["b",bend left,auto=left] (0) (0) edge ["a"] (1);
\draw[->] (2) edge [bend left] (0) (1) edge ["a"] (2);
\draw[->] (3) edge [bend left] (0)(2) edge["a"] (3);
\draw[->] (5) edge [bend left] (0) edge ["a"] (6);
\draw[->] (6) edge [bend left] (0) edge ["a",black] (7);
\draw[->,blue] (7) edge [bend right,auto=right,"b"] (1) edge ["a",black] (8)(6) edge [bend right,"b",auto =right] (1);
\draw[->,red] (8) edge [bend right,auto=right] (2)(7) edge [bend right,auto=right,"a"] (2);
\draw[->] (10) edge ["a"] (11);
\draw[->] (11) edge ["a"] (12);
\draw[-,dashed,bend left,auto=left] (9) edge (10);
\draw[->] (14) edge ["a"] (15) edge [bend left,auto=left,"b",blue] (10);
\draw[->] (15) edge ["a"] (16) edge [bend right,auto=right,"b",blue] (11)(15) edge [bend left,auto=left,"b",blue] (10);
\draw[->,blue] (16) edge ["a",bend right,auto=right] (11);
\end{tikzpicture}
\end{document}

Respuesta1

Si entendí tu pregunta correctamente, entonces estás buscando esto:

ingrese la descripción de la imagen aquí

Dado que no indicó dónde están las líneas de conexión cy las etiquetas y colores utilizados no coinciden en su mwe, probablemente dibujé estas líneas en el color incorrecto. sin embargo, esto para usted no debería ser un problema para corregir.

También limpié un poco tu código y lo hice más corto:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}%{tikz-cd}
\usetikzlibrary{chains,
                fit,
                positioning}
\tikzset{
every edge quotes/.style={fill=white, fill opacity=0.8, text opacity=1,
                          font=\footnotesize}
}
\begin{document}
    \begin{tikzpicture}[
node distance = 21mm and 7mm,
  start chain = going right
                        ]
    \begin{scope}[every node/.style={draw, inner xsep=1pt, inner ysep=2pt, on chain}]
% top chain
\node   (00)    {$(0,0)$};
\node[below=of 00]  (0) {$0$};
\node   (1)     {$(1)$};
\node   (2)     {$(2)$};
\node   (3)     {$(3)$};
\node[draw=none]    (4) {$\textbf{\dots}$};
\node   (5)     {$(y{-}1)$};
\node   (6)     {$(y)$};
\node   (7)     {$(y{+}1)$};
\node   (8)     {$(y{+}2)$};
\node[draw=none]    (9) {$\textbf{\dots}$};
% bottom chain
\node[below=of 0]   (16)    {$(x+1)$};
\node   (15)    {$(x)$};
\node   (14)    {$(x{-1})$};
\node[draw=none]    (13)    {$\textbf{\dots}$};
\node   (12)    {$(x{-}b{+}1)$};
\node   (11)    {$(x{-}b)$};
\node   (10)    {$(x{-}b{-}1)$};
    \end{scope}
% legend
\coordinate[below=1mm of 00.south -| 7]  (L);
\draw[blue] (L) -- + (1,0)               node[right] {a};
\draw[red]  ([yshift=-3mm] L) -- + (1,0) node[right] {b};
\draw       ([yshift=-6mm] L) -- + (1,0) node[right] (LL)  {c};
\node[draw, yshift=0.5ex, fit=(L) (LL)] {};
% connections
%  a
\draw[->,blue]  (0)     edge [bend left]    (00)
                (00)    edge                (0)
                (6)     edge [bend right]   (1)
                (7)     edge [bend right]   (1)
% botttom
                (14)    edge [bend left]    (10)
                (15)    edge [bend left]    (10)
                (15)    edge [bend right]   (11)
                (16)    edge [bend right]   (11);
% b
\draw[->,red]   (7)     edge [bend right]   (2)
                (8)     edge [bend right]   (2);
% c
\foreach \i in {1,2,3, 6,7,8, 11,12, 15,16}
{
\pgfmathsetmacro{\ii}{int(\i-1)}
\draw[->]   (\ii) -- (\i);
}
%
\draw[-,dashed] (9) edge [bend left] (10);
    \end{tikzpicture}
\end{document}

información relacionada