使用 tikz-network 在两行上标记

使用 tikz-network 在两行上标记

tikz-network对于需要长标签的简单图表,我使用了一个非常好的包,有没有办法在两行上放置标签?

在此处输入图片描述

\begin{filecontents}{vert.csv}
id, label, x, y
A, long label, 0,  0
B, label 2,0.87,0.5
C, label 3, -0.87,  0.5
D, label 4,-0.87,  -0.5
E, label 5, 0.87,-0.5
\end{filecontents}
\begin{filecontents}{edg.csv}
u,v,label, bend
B,A,FC1,0
C,A,FC2,0
D,A,FC3,0
E,A,FC4,0
B,C,FP1,15
B,E,FP2,-40
\end{filecontents}
\documentclass[a4paper,12pt]{article}
\usepackage{tikz-network}
\begin{document}
\begin{tikzpicture}
\SetVertexStyle[MinSize=1.2cm]
\SetDistanceScale{3.0}
\Vertices{vert.csv}
\Edges{edg.csv}
\end{tikzpicture}
\end{document}

答案1

手册建议添加[style={...}]\Vertices宏中,但从源代码来看,节点中的文本似乎是单独完成的。因此,我建议“破解”它(这与包作者的名字无关;-),只需设置

every label/.append style={text width=1cm,align=center}

tikzpicture选项中。

\documentclass[a4paper,12pt]{article}
\usepackage{filecontents}
\begin{filecontents*}{vert.csv}
id, label, x, y
A, {long label}, 0,  0
B, label 2,0.87,0.5
C, label 3, -0.87,  0.5
D, label 4,-0.87,  -0.5
E, label 5, 0.87,-0.5
\end{filecontents*}
\begin{filecontents*}{edg.csv}
u,v,label, bend
B,A,FC1,0
C,A,FC2,0
D,A,FC3,0
E,A,FC4,0
B,C,FP1,15
B,E,FP2,-40
\end{filecontents*}
\usepackage{tikz-network}
\begin{document}
\begin{tikzpicture}[every label/.append style={text width=1cm,align=center}]
\SetVertexStyle[MinSize=1.2cm]
\SetDistanceScale{3.0}
\Vertices{vert.csv}
\Edges{edg.csv}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

看看吧tikz-network 文档并发现普通的 TikZ 可以帮助处理这种简单的图形。(为什么tikz-network使用默认颜色teal!50?)

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[line width=1.5pt,
n/.style={circle,draw,fill=#1,minimum size=15mm},
j/.style={circle,midway,fill=white}]
\def\a{4} \def\b{2.5}

\path
(0,0)     node[n=orange,align=center] (F) {Four\\Seasons}
(-\a,-\b) node[n=green!50] (Sp) {Spring}
(\a,-\b)  node[n=red!50] (Su) {Summer}
(\a,\b)   node[n=yellow!50] (Au) {Autumn}
(-\a,\b)  node[n=gray!50] (Wi) {Winter};

\draw 
(F)  to node[j]{FC3} (Sp)
(F)  to node[j]{FC4} (Su)
(F)  to node[j]{FC1} (Au)
(F)  to node[j]{FC2} (Wi)
(Wi) to[bend right=20] node[j]{FP1} (Au)
(Su) to[bend left=20]  node[j]{FP2} (Au); 
\end{tikzpicture}
\end{document}

相关内容