随时间变化的路线问题可视化

随时间变化的路线问题可视化

我或多或少是 Latex 的新手,现在我正处于硕士论文的最后几天。我偶然发现了一种很好的方法来说明旅游中的一系列访问。想象一个游客在固定的时间范围内访问某些地方。
虚线表示随时间推移的节点之间的路径,实线表示每个节点 i、j、k 和 n 的开放时间。图表上方的连接节点代表整个旅游。每个节点都给出了有关开放时间和访问时间的信息。节点之间给出了旅行时间。图中的最大节点数为 10。

在此处输入图片描述

有人知道一个足够简单的解决方案让我可以快速完成这件事吗?快速而干净也很好 ;)

答案1

您所需要的只是pgfplots。符号坐标可以在这里提供帮助。由于pgfplots基于 TiZ,你可以添加各种TiZ 的东西。快速:可能是,肮脏:你来决定,可改进:绝对可行。

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,width=12cm, height=8cm}
\begin{document}
\begin{tikzpicture}[font=\sffamily,b1/.style={circle,minimum
size=1.7em,fill=blue,text=white},b2/.style={circle,minimum
size=1.5em,fill,text=white}]
 \begin{axis}[axis lines=left,
        xmin=8,xmax=26,xlabel=time,xtick={8,10,...,22},
        ylabel=nodes,enlarge y limits=0.1,
         symbolic y coords={n,k,j,i,1},
        ytick=data,
    ]
  \addplot[dashed,no marks] coordinates 
        {(8,1) (9,i) (10,i) (12,j) (15,j) (16,k) (19,k) (20,n)};
  \addplot[mark=triangle*] coordinates  {(8,i) (20,i)};
  \addplot[mark=triangle*] coordinates  {(14,j) (16,j)};
  \addplot[mark=triangle*] coordinates  {(15,k) (22,k)};
  \path (9,1) coordinate (l) (24,1) coordinate (r);
 \end{axis}
  \path (l|-current axis.north) node[b1](1){1} --
  (r|-current axis.north) node[b1](n){n}
  foreach \X in {1,2,3} {coordinate[pos=\X/4,yshift={5pt+iseven(\X)*5pt}] (p\X)};
  \draw[every label/.append style={align=center}] (1) 
   -- node[below]{$t_{1i}=1$} (p1) node[b2,label=above:{blabla\\blabla}](i){i}
   -- node[below]{$t_{ij}=2$} (p2) node[b2,label=above:blabla](j){k}
   -- node[below]{$t_{jk}=1$} (p3) node[b2,label=above:blabla](k){k}
   -- node[below]{$t_{kn}=1$} (n);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容