简单的 tikz 图

简单的 tikz 图

我对 tikz 很陌生,正在尝试绘制一些非常简单的图形。

我得到了以下工作示例,但我仍然不完全理解。

  • 如何最好地连接 1 和 4、1 和 5、2 和 4、2 和 5 以便仍然可以识别箭头?
  • 我怎样才能将大小相同的圆圈调整到最大?到目前为止,它们已经和里面的文字一样大了。
  • 是否可以将节点 4 定位为不依赖于固定的低于值?否则,我无法简单地通过调整距离来缩小整个物体。
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}

\begin{document}

\tikzset{blob/.style={circle,draw,font=\sffamily\Large\bfseries}}
\tikzset{blobg/.style={circle,gray,draw,font=\sffamily\Large\bfseries}}

\begin{tikzpicture}[->,>=stealth,auto,node distance=2cm,on grid,very thick]
    \node (1) [blob] {1};
    \node (2) [blob,right of=1] {2};
    \path (1) -- node (3) [blob,below of=1] {3} (2);
    \node (4) [blob,below=4] {4};
    \node (5) [blobg,right of=4] {512};

  \path[every node/.style={font=\sffamily\small}]
    (1) edge node [left] {} (3)
    (2) edge node [left] {} (3)
    (3) edge node [left] {} (4)
    (3) edge node [left] {} (5);
\end{tikzpicture}
\end{document}

答案1

这里展示了两种方法来回答您的 3 个问题。

  1. 两种不同的方法展示了连接节点的不同方式。

  2. \textwidth=\widthof{BiggestOne}可以通过calctikzlibrary将圆圈统一调整为最大的圆圈。

  3. 第一种方法(OP)与节点相关,而第二种方法可通过column sep和进行调整row sep。也就是说,无需使用固定的低于值。第二种解决方案是矩阵节点解决方案。指定节点矩阵时,可以使用以下符号为任何节点添加|(<NodeName>)|名称节点文本。

注:红色圆圈可以改为灰色。

第一张图片是OP,第二张图片是矩阵节点法。

在此处输入图片描述

代码

\documentclass[]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,positioning,calc}

\begin{document}

% ---- Mehtod 1

\sffamily\Large\bfseries

\begin{tikzpicture}[->,>=stealth,node distance=2cm,on grid,very thick]
\tikzset{blob/.style={circle, text width=\widthof{512}, text centered, draw}}
\tikzset{blobg/.style={circle, red, draw, text centered}}
    \node (1) [blob] {1};
    \node (2) [blob,right of=1] {2};
    %\path (1) -- node (3) [blob,below of=1] {3} (2);
    \node (3) [blob,below of=1,xshift=1cm] {3}; % modified
    \node (4) [blob,below = 4cm of 1] {4};
    \node (5) [blobg,right of=4,] {512};

  \path%[every node/.style={font=\sffamily\small}]
    (1) edge node[left] {} (3)
    (2) edge node[left] {} (3)
    (3) edge node[left] {} (4)
        edge node[left] {} (5);
\end{tikzpicture}

\vspace{1cm} 

%  --- method 2

\begin{tikzpicture}[boxes/.style={draw, circle, text width=\widthof{5122}, very thick, text centered, text=black},scale=1,->,>=stealth,]
\matrix (mat) [matrix of nodes, nodes=boxes, column sep=0.5cm, row sep=0.5cm] 
  {
   |(1)| 1     &               &   |(2)| 2      \\ 
               &   |(3)| 3     &                 \\
   |(4)|4      &               &  \node[red](5){5122}; \\ 
  };  
\draw [very thick, black, ->] (1)--(3);  
\draw [very thick, black, ->] (2)--(3);
\draw [very thick, black, ->] (3)--(4);
\draw [very thick, black, ->] (3)--(5);
\end{tikzpicture}

\end{document}

相关内容