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}