绘制带有时间标签的网格

绘制带有时间标签的网格

我怎样才能绘制像下图这样的图形?

似乎我可以使用一些包来绘制图形,但我是新手,我不知道它们是否有局限性。

在此处输入图片描述

要求如下:

-开头有一个黑色实心节点

-每个节点顶部都有一个标签,底部有一个数字

- 可以是虚线或实线箭头

-底部有一个指示时间的标签。

有什么建议吗?或者我应该用一些软件画出来然后添加为图像?

答案1

如果可能的话,最好提供一个最小工作示例(MWE),向我们展示您迄今为止尝试过的方法,以便我们尝试提供符合您要求的解决方案。尽管如此,由于您也有一些一般性问题,我认为我应该提供一种可行的方法(使用TikZ),并尝试回答您的一些一般性问题。

TikZ是一个非常强大的绘图包,可以让你绘制几乎任何东西(见texample.net;PStricks是另一个包,但我不太熟悉它),所以你不必用其他软件绘制这样的图像,然后将其作为图像包含。这是一种可能性,但如果你可以使用包轻松编写图像,我通常会这样做,因为包含某些文件类型的图像(例如,,,,.eps.pdfETC。)在某些情况下有时会引起问题(见使用哪种图形类型:pdf 还是 eps?)。

所以无论如何,你可以在 中做到这一点TikZ。我提供的解决方案还利用了varwidth包,以便允许在TikZ nodes 内换行(请参阅TikZ 节点中的手动/自动换行和文本对齐)以及TikZpositioning,以便将nodes 相对于彼此放置:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\usepackage{varwidth}

\begin{document}

\begin{tikzpicture}

\node [draw,circle,fill=black] (begin-node) {};
\node [below=2.5cm of begin-node] (0) {0};
\node [right=1.5cm of 0] (1) {1};
\node [right=2cm of 1] (2) {2};
\node [right=2cm of 2] (3) {3};
\node [above=0.5cm of 1,draw,circle] (F1) {\begin{varwidth}{1cm}\centering F \\ 1\end{varwidth}};
\node [above=2.5cm of F1,draw,circle] (T1) {\begin{varwidth}{1cm}\centering T \\ 1\end{varwidth}};
\node [above=0.5cm of 2,draw,circle] (F2) {\begin{varwidth}{1cm}\centering F \\ 2\end{varwidth}};
\node [above=2.5cm of F2,draw,circle] (T2) {\begin{varwidth}{1cm}\centering T \\ 2\end{varwidth}};
\node [above=0.5cm of 3,draw,circle] (F3) {\begin{varwidth}{1cm}\centering F \\ 3\end{varwidth}};
\node [above=2.5cm of F3,draw,circle] (T3) {\begin{varwidth}{1cm}\centering T \\ 3\end{varwidth}};
\draw[->] (begin-node) -- (T1);
\draw[->] (begin-node) -- (F1);
\draw[->] (T1) -- (T2);
\draw[->] (F1) -- (F2);
\draw[->] (T2) -- (T3);
\draw[->,dashed] (F2) -- (F3);
\draw[->,dashed,very thick] (F1) -- (T2);
\draw[->,dashed,thick] (T2) -- (F3);

\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

TikZ 及其chains库(也加载positioning库)。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}
  \node[circle, fill, draw, inner sep=+0pt, minimum size=2ex, alias=F-0] (A) {};
  \begin{scope}[
    every node/.append style={circle, align=center, draw},
    every on chain/.append style={join},
    every join/.append style={->},
    start chain=T going right,
    start chain=F going right]
    \foreach \sStyle/\tText in {above right=of A/1, /2, /1}
      \node[on chain=T, style/.expand once=\sStyle] {T\\\tText};
    \begin{scope}[nodes={on chain=F}]
      \node [below right=of A] {F\\1};
      \node                    {F\\2};
      \path[every join/.append style=dashed] node {F\\3};
    \end{scope}
  \end{scope}
  \path[->] (A) edge (T-1) edge (F-1);
  \path[->, dashed] (F-1) edge (T-2)
                    (T-2) edge (F-3);

  \node[below=.5cm of F-3] (3) {3};
  \foreach \cnt in {0,1,2}
    \node at (F-\cnt |- 3) {\cnt};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容