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