这是上一个问题的延续:使用调色板绘制一组箭头。
我想要的是
我想要绘制从一个节点到多个节点的多个箭头。从同一节点开始的每个箭头必须具有相同的颜色;但另一个节点必须具有以下颜色(其箭头具有相同的颜色), 等等。
您必须以最自动的方式实现以下目标:
我做了什么
此 MWE 经过改编,可以更好地处理该问题的答案:
\documentclass{article}
\usepackage{tikz}
\newcommand\totalnodes{5} % Define the total of nodes-1
\begin{document}
\begin{tikzpicture} % From https://tex.stackexchange.com/a/480466/152550
\foreach \X in {0,...,\totalnodes} {
\node[circle,draw,name=a\X] at (0,\X) {};
\node[circle,draw,name=b\X] at (1,\X) {};
% [actual node] * [0.75 (limits the final color to purple)] * 1/\totalsubjects
\pgfmathsetmacro{\huenum}{\X*0.75*(1/\totalnodes)}
\definecolor{mycolor}{hsb}{\huenum,1,1}
\draw[-latex,mycolor] (a\X) to (b\X);
}
\end{tikzpicture}
\end{document}
如您所见,我找不到能够添加来自同一节点的更多箭头的算法。
我的想法是制作一个递归算法,遍历一些我想要获取箭头的节点,但我不知道如何从一个节点跳转到另一个节点,0
然后2
再跳转到5
等等。
例如,首先我尝试将某些内容更改\draw[-latex,mycolor] (a\X) to (b\X);
为\draw[-latex,mycolor] (a\X) to (b$\X-0$);
(新行)\draw[-latex,mycolor] (a\X) to (b$\X-1$);
(新行)\draw[-latex,mycolor] (a\X) to (b$\X-2$);
等,但编译器出现错误(正如预期的那样)。
谢谢!!
答案1
类似这样?您在列表中指定连接。第 0 个条目指定第 0 个 a 节点将与 b 节点 2 和 3 连接,依此类推。
\documentclass{article}
\usepackage{tikz}
\newcommand\totalnodes{5} % Define the total of nodes-1
\begin{document}
\begin{tikzpicture} % From https://tex.stackexchange.com/a/480466/152550
\def\LstCon{{"{2,3}","{1}","{2}","{2,3,4,5}","{4}","{1,4,5}"}}
\foreach \X in {0,...,\totalnodes} {
\node[circle,draw,name=a\X] at (0,\X) {};
\node[circle,draw,name=b\X] at (1,\X) {};
}
\foreach \X in {0,...,\totalnodes} {
\pgfmathsetmacro{\huenum}{\X*0.75*(1/\totalnodes)}
\definecolor{mycolor}{hsb}{\huenum,1,1}
\pgfmathsetmacro{\mylst}{\LstCon[\X]}
\foreach \Y in \mylst
{\draw[-latex,mycolor] (a\X) to (b\Y);}
}
\end{tikzpicture}
\end{document}