![TikZ:节点矩阵中路径上的节点放置](https://linux22.com/image/361286/TikZ%EF%BC%9A%E8%8A%82%E7%82%B9%E7%9F%A9%E9%98%B5%E4%B8%AD%E8%B7%AF%E5%BE%84%E4%B8%8A%E7%9A%84%E8%8A%82%E7%82%B9%E6%94%BE%E7%BD%AE.png)
我在将节点放置在 TikZ 矩阵中两个节点之间绘制的路径上时遇到了问题。我想显示有向图的边缘与其邻接矩阵的条目之间的对应关系。我的计划是在有向图的边缘与其邻接矩阵的关联条目之间绘制一个虚线箭头。
我有两个问题,一个大,一个小。最大的问题是,在下面的 MWE 中,我无法正确地将节点放置在 E 和 C 之间的弯曲边缘上。
\draw[blue,thick] (E) to [bend right] (C);
\node (ece) [pos=0.2] {} (E) -- (C); % (ece) is nowhere the edge :-(
对我来说,一个小问题是我不明白为什么节点 (mdag)-3-3 不画成圆圈;而是画成蓝色。
以下是完整的 MWE。
非常感谢。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
\matrix (dag) [matrix of nodes,%
nodes={outer sep=0pt,circle,minimum size=4pt,draw},
column sep={2cm,between origins},
row sep={2cm,between origins},
ampersand replacement=\&] {
|(A)| A \& |(C)| C \\
|(D)| D \& |(E)| E \\
};
\draw (D) to [bend left] (A);
\draw (E) to [bend right] (A);
\draw[blue,thick] (E) to [bend right] (C);
\node (ece) [pos=0.2] {} (E) -- (C); % (ece) is nowhere the edge :-(
\matrix (mdag) at ([xshift=3cm]C.north east)
[matrix of math nodes,
anchor=TL.north west,
every node/.style={font={\large\ttfamily}},
row 3 column 3/.style={circle,blue}] {
|(TL)| & A & C \\
D & 1 & 0 \\
E & 1 & |(mce)| 1 \\
};
\draw[blue,fill] (ece) circle (1.5pt);
\draw[dotted] (ece) to [bend right] (mce.center);
\end{tikzpicture}
\end{document}
答案1
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto,
C/.style = {%circle
circle, fill=blue, inner sep=1pt}
]
\matrix (dag) [matrix of nodes,%
nodes={outer sep=0pt,circle,minimum size=4pt,draw},
column sep={2cm,between origins},
row sep={2cm,between origins},
ampersand replacement=\&] {
|(A)| A \& |(C)| C \\
|(D)| D \& |(E)| E \\
};
\draw (D) to [bend left] (A);
\draw (E) to [bend right] (A);
\draw[blue,thick] (E) to [bend right] node[C,right=1mm] (ece) {} (C); % <--- see changes
\matrix (mdag) at ([xshift=3cm]C.north east)
[matrix of math nodes,
anchor=TL.north west,
every node/.style={font={\large\ttfamily}},
row 3 column 3/.style={circle,blue}] {
|(TL)| & A & C \\
D & 1 & 0 \\
E & 1 & |(mce)| 1 \\
};
\draw[dotted] (ece) to [bend right] (mce.center);
\end{tikzpicture}
\end{document}
给出:
这就是你要找的东西吗?
我的节点位于边缘,而您的节点没有确定任何坐标。节点的正确位置是,\node at (<coordinate) {...};
但您\node (ece) [pos=0.2] {} (E) -- (C)
写错tikz
了... 如果您将其更改为\path (E) -- node (ece) [pos=0.2] {}(C)
,则节点确实会出现在距离 20% 的E
位置C
。