绘制具有共享子节点的无根节点图

绘制具有共享子节点的无根节点图

我的目标是制作如下面的代码所示的图表:(我还不允许发布图片)

\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……)。这看起来更清晰。

相关内容