我对 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 个问题。
两种不同的方法展示了连接节点的不同方式。
\textwidth=\widthof{BiggestOne}
可以通过calc
tikzlibrary将圆圈统一调整为最大的圆圈。第一种方法(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}