Eu tenho o seguinte código para um tikz
diagrama. Em vez de rotular todas as arestas individualmente, quero colocar uma caixa de legenda para cores semelhantes que representam as arestas. Neste diagrama, a caixa de legenda conterá os seguintes itens
1. red line for value `b`
2. blue line for value `a`
3. black lines for value `c`.
Além disso, como posso alterar o padrãofundo brancode rótulos no decision
comando paratransparentede modo a evitar a falta de algumas partes das bordas na sobreposição. Alguma ajuda para reduzir o código usando outros comandos ou tikzpicture
ambiente?
\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}
Responder1
se entendi sua pergunta corretamente, você está procurando por isso:
como você não indicou onde estão as linhas de conexão c
e os rótulos e cores usados não combinam no seu mwe, provavelmente desenhei essas linhas na cor errada. no entanto, isso para você não deve ser um problema para corrigir.
Também limpei um pouco seu código e o tornei mais curto:
\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}