创建带有突出显示路径的小节点图

创建带有突出显示路径的小节点图

我正在尝试使用 TikZ 重新创建以下绘图。

小图

我探索了许多不同的选择,但遇到了以下问题:

  • 还没有弄清楚如何制作小的“点状”节点。
  • 我可以以一种颜色突出显示一些路径,但不能同时使用两种颜色。

我并不是要求其中某个成员完成整个绘图,而只是针对我所遇到的问题给出正确的指导。

提前致谢!

编辑:

这是我目前所拥有的。

 \begin{tikzpicture}

    \path [draw, fill] (0,0) circle (1pt);
    \path [draw, fill] (1,-1) circle (1pt);
    \path [draw, fill] (2,0) circle (1pt);
    \path [draw, fill] (3,-1) circle (1pt);
    \path [draw, fill] (4,0) circle (1pt);
    \path [draw, fill] (5,-1) circle (1pt);
    \path [draw, fill] (6,0) circle (1pt);
    \path [draw, fill] (7,0) circle (1pt);
    \path [draw, fill] (8,1) circle (1pt);
    \path [draw, fill] (9,2) circle (1pt);

    \draw [red] (0,0) -- (1,-1) -- (2,0) -- (3,-1)  -- (4,0) -- (5,-1) -- (6,0) -- (7,0) -- (8,1) -- (9,2) -- cycle;

    \draw [green] (0,0) -- (1,-1) -- (2,0) -- (3,-1)  -- (9,2) -- (8,1) -- (7,0) -- (6,0) -- (5,-1) -- (4,0) -- cycle;

\end{tikzpicture}

这就导致了:第一次尝试!

问题:

  • 如何标记用 \path 绘制的点?
  • 两种颜色路径的颜色融合在一起。

答案1

这是一个选项:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,backgrounds}

\newcommand\Twocolor[4]{
\path 
  let 
  \p1=($ #1 - #2 $ ),
  \p2=#1,
  \p3=#2
  in 
  node[
    draw,
    outer sep=0pt,
    inner sep=0pt,
    minimum height=3pt,
    text width={veclen(\x1,\y1)},
    rotate={atan((\y3-\y2)/(\x3-\x2))},
    anchor=west
  ] (mydouble) at #1 {};
  \draw[#3,line width=1pt] (mydouble.north west) -- (mydouble.north east); 
  \draw[#4,line width=1pt] (mydouble.south west) -- (mydouble.south east); 
}

\begin{document}

\begin{tikzpicture}[
  mydot/.style={
    fill,
    circle,
    inner sep=2pt
  },
]
\node[mydot,label={left:$v_{0}$}] (v0) {};
\node[mydot,below right=of v0] (v1) {};
\node[mydot,above right=of v1] (v2) {};
\node[mydot,below right=of v2,label={below:$v_{i}$}] (v3) {};
\node[mydot,above right=of v3,label={right:$v_{i+1}$}] (v4) {};
\node[mydot,below right=of v4] (v5) {};
\node[mydot,above right=of v5] (v6) {};
\node[mydot,right=of v6] (v7) {};
\node[mydot,above right=of v7] (v8) {};
\node[mydot,above right=of v8,label={right:$v_{k}$}] (v9) {};
\begin{pgfonlayer}{background}
\Twocolor{(v0)}{(v1)}{red}{green}
\Twocolor{(v1)}{(v2)}{red}{green}
\Twocolor{(v2)}{(v3)}{red}{green}
\Twocolor{(v4)}{(v5)}{green}{red}
\Twocolor{(v5)}{(v6)}{green}{red}
\Twocolor{(v6)}{(v7)}{green}{red}
\Twocolor{(v7)}{(v8)}{green}{red}
\Twocolor{(v8)}{(v9)}{green}{red}
\end{pgfonlayer}
\draw[red,line width=1pt] 
  (v3) -- (v4);
\draw[green,line width=1pt] 
  (v0) to[out=45,in=135] (v4)
  (v3) to[out=-45,in=-20,looseness=1] (v9);
\end{tikzpicture}

\end{document}

双色线是使用命令绘制的

\Twocolor{<start-coord>}{<end-coord>}{<upper color>}{<lower color>}

相关内容