![创建带有突出显示路径的小节点图](https://linux22.com/image/319619/%E5%88%9B%E5%BB%BA%E5%B8%A6%E6%9C%89%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E8%B7%AF%E5%BE%84%E7%9A%84%E5%B0%8F%E8%8A%82%E7%82%B9%E5%9B%BE.png)
我正在尝试使用 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>}