我正在使用 tikz 绘制如下图形:
如果我只使用其中一个,结果就很好:
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,thick,main node/.style={circle,fill=white!20,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {v1};
\node[main node] (2) [below left of=1] {v2};
\node[main node] (3) [below right of=2] {v3};
\node[main node] (4) [below right of=1] {v4};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4)
(4) edge node [left] {}(1);
\end{tikzpicture}
结果:
另一个:
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,thick,main node/.style={circle,fill=white!20,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {v1};
\node[main node] (2) [right of=1] {v2};
\node[main node] (3) [right of=2] {v3};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {} (2)
(2) edge node [right] {} (3);
\end{tikzpicture}
结果:
但是如果在同一代码中将上述代码一起使用,我会得到这个奇怪的结果:
所以这些图都混在一起了。我该如何将这些图分开呢?
谢谢!!!
答案1
如果“在同一个代码中一起使用”的意思是在同一tikzpicture
环境中组合前两个图,那么问题就在于您没有v1
在第二个图中为节点指定位置(结果,它被放在默认坐标处,这也恰好是v1
第一张图片所在的位置)。
在第二个图中明确给出坐标v1
。例如,绝对位置,
\node[main node] (1) at (<coordinate>) {v1};
或相对位置
\node[main node, right=of 4] (1) {v1};
完整代码
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,thick,main node/.style={circle,fill=white!20,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {v1};
\node[main node] (2) [below left=of 1] {v2};
\node[main node] (3) [below right=of 2] {v3};
\node[main node] (4) [below right=of 1] {v4};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4)
(4) edge node [left] {}(1);
\node[main node] (1) [right=of 4] {v1};
\node[main node] (2) [right=of 1] {v2};
\node[main node] (3) [right=of 2] {v3};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {} (2)
(2) edge node [right] {} (3);
\end{tikzpicture}
\end{document}
输出
另请注意,我已将您的right of=...
语法更改为right=of ...
。请参阅PGF/TikZ 中“right of=”和“right=of”之间的区别更多细节。