我的目标是制作如下面的代码所示的图表:(我还不允许发布图片)
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[node distance=4cm]
\node [circle,draw](a){XY};
\node [circle,draw][right of = a](b){YZ};
\path (a) -- (b) node[circle,draw] [below, midway, yshift = -2 cm] (d) {Y};
\node [circle,draw][right of = b](c){XZ};
\path (b) -- (c) node[circle,draw] [below, midway, yshift = -2 cm] (e) {Z};
\node [circle, draw][below right of = c,yshift = 0.45 cm, xshift = -1 cm](f) {X};
\draw (a) -- (d);
\draw (b) -- (d);
\draw (b) -- (e);
\draw (c) -- (e);
\draw (a) -- (f);
\draw (c) -- (f);
\end{tikzpicture}
\end{document}
代码成功生成了所需的输出,但是,正如所观察到的,它有点混乱,因为我必须使用 xshift 和 yshift 手动调整距离才能获得所需的结果。所以,我想知道是否存在更好的方法来实现相同(或更好)的结果。
答案1
使用 tkz-graph,可以轻松创建此类图表
\documentclass[11pt]{scrartcl}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}
\SetGraphUnit{4}
\Vertices[x=0,y=2]{line}{XY,YZ,XZ}
\Vertices[x=2,y=0]{line}{Y,Z,X}
\Edges(XY,Y,YZ,Z,XZ,X,XY)
\end{tikzpicture}
\end{document}
你加起来 \GraphInit[vstyle=Shade]
就得到
答案2
有了它,matrix of nodes
也很容易做到。
\documentclass[tikz]{standalone}
\usetikzlibrary{matrix}
\begin{tikzpicture}
\matrix (A) [matrix of nodes, nodes={circle, draw},
column sep=1cm, row sep=1cm]
{
XY & & YZ & & XZ \\
& Y & & Z & & X \\
};
\draw (A-1-1)--(A-2-6)--(A-1-5);
\draw (A-1-1)--(A-2-2)--(A-1-3);
\draw (A-1-3)--(A-2-4)--(A-1-5);
\end{tikzpicture}
\end{document}
答案3
那这个呢?
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=4cm]
\node [circle,draw](xy){XY};
\node [circle,draw][below right of = xy](y){Y};
\node [circle,draw][above right of = y](yz){YZ};
\node [circle,draw][below right of = yz](z){Z};
\node [circle,draw][above right of = z](xz){XZ};
\node [circle,draw][below right of = xz](x){X};
\draw (xy) -- (x);
\draw (xy) -- (y);
\draw (y) -- (yz);
\draw (yz) -- (z);
\draw (z) -- (xz);
\draw (xz) -- (x);
\end{tikzpicture}
\end{document}
我使用右下方和右上方绘制所有节点,然后将它们连接起来。
顺便说一句,我使用了更好的节点 ID(而不是 a、b、c……)。这看起来更清晰。