生成带连接线的标签图

生成带连接线的标签图

我需要生成一个显示点之间关系的图表。我可以将数据转换为简单的语法,例如下面这样(其他形式的语法也可以):

A (B, C) % A is connected to B and C
C (A, D, E, F) % C is connected to A, D, E, and F

得到的信息应该转换成某种图表,比如这样:

A------------------------B
 \                      /
  C-----D              /
 / \     \            /
E---F     G          /
 \   \   / \        /
  \   H /   I      /
   \   /   /|     /
    \ /   / |    /
     J---K--L---M
    / \ /    \ /        N   O      P   Q
  • 这些点将包含单词,例如

    “海洋”(“洋流”、“潮汐”)

  • 这些要点绝不应放在其他要点之上,否则,阅读它们会很困难。

  • 线条末端没有箭头。
  • 线的中点没有标签。

有没有什么工具可以生成这样的图表?

答案1

看一下图形可视化dot2tex。套件dot中的程序graphviz应该允许您定义关系并将dot2tex其转换为 Tikz。您可以使用 LaTeX 将 TikZ 转换为pdf

我没用过,dot2tex但是我用过dot:它很容易使用。

答案2

我一行一行的输入坐标,我觉得不是太难。如果有些单词太长,可以修改 的值x

\documentclass[]{scrartcl}
\usepackage{fullpage}
\usepackage{tkz-graph}
\thispagestyle{empty}
\begin{document}

% style
\tikzset{VertexStyle/.style = {draw, shape=rectangle}}
\tikzset{EdgeStyle/.style   = {dashed,color  = orange}}  

\begin{tikzpicture}[x=1.25cm,y=-2cm]
% vertex
\foreach \xv/\yv/\v/\Lv in {%
 0/0/A/Word 1, 10/0/B/Word 2,
 1/1/C/Word 3, 5/1/D/Word 4,
 0/2/E/Word 5, 2/2/F/Word 6, 6/2/G/Word 7,
 3/3/H/Word 8, 7/3/I/Word 9,
 2/5/J/Word 10, 4/5/K/Word 11, 6/5/L/Word 12, 8/5/M/Word 13,
 1/6/N/Word 14, 3/6/O/Word 15, 7/6/P/Word 16, 9/6/Q/Word 17}%
  {\Vertex[x=\xv,y=\yv,L=\Lv]{\v}}
% edges
\Edges(I,K,O,J,E,C,D,G,I,L,P,M,B,A,C,F,H) 
\Edges(N,J,K,L,M,Q) \Edges(G,J) \Edges(E,F)   

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容