我想在 tikz 中绘制两个节点之间的边,但这条边应该是“点状”的,而且点必须是不同的形状(不是点或虚线)。目前,我的目标是将点的形状变成一个星号 (*)。但是,一个好的解决方案应该是足够通用的,这样我就可以定义任何合理的形状(比如三角形、星形、六边形)并以虚线样式获得边。
编辑:感谢您的评论,我设法让一些东西工作了。但是,我仍然遇到了一些问题。现在我有以下 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{subcaption}
\usetikzlibrary{arrows}
\usetikzlibrary{snakes}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{shapes}
\usetikzlibrary{decorations.shapes}
\usetikzlibrary{positioning}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}[->,=>stealth']
\node[draw,circle,fill=black] (a) at (0,-0.5) {};
\node[draw,circle,fill=black] (b) at (3.5,-3) {};
\path[very thick]
(a) edge[decorate,decoration={crosses, shape evenly spread=6, shape size={.15cm}}] node {} (b)
;
\end{tikzpicture}
\end{document}
问题是shape evenly spread
或shape sep
选项对我来说似乎不起作用。
还有人有同样的问题吗?无论我如何改变其中一个的参数,它生成的数字始终相同。
答案1
shape evenly spread
和shape sep
不是crosses
装饰的有效选项。但您可以使用segment length
来更改十字(中心)之间的距离。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.shapes}
\begin{document}
\begin{tikzpicture}
\path[very thick] (0,-.5) edge[decorate, decoration={crosses, segment length=7mm, shape size=.15cm}] node {} (3.5,-3);
\path[very thick, red] (1,-.5) edge[decorate, decoration={crosses, segment length=5mm, shape size=.15cm}] node {} (4.5,-3);
\path[very thick, blue] (2,-.5) edge[decorate, decoration={crosses, segment length=2mm, shape size=.15cm}] node {} (5.5,-3);
\end{tikzpicture}
\end{document}
请注意,您可以定义自己的风格,使代码更简单一些:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.shapes}
\tikzset{mycrosses/.style={very thick, decorate, decoration={crosses, segment length=#1, shape size=.15cm}},
mycrosses/.default={7mm}}
\begin{document}
\begin{tikzpicture}
\draw[mycrosses] (0,-.5) -- (3.5,-3);
\draw[mycrosses=5mm, red] (1,-.5) -- (4.5,-3);
\draw[mycrosses=2mm, blue] (2,-.5) -- (5.5,-3);
\end{tikzpicture}
\end{document}