我正在生成 tikz 项链图,我想标记边缘,但我无论如何都无法从手册中弄清楚如何操作。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs, graphdrawing}
\usegdlibrary{circular}
\begin{document}
\begin{tikzpicture}
[baseline=-6mm,
field/.style={font=\footnotesize,circle,fill=black, minimum size=4mm, inner sep=0mm},
wall/.style={font=\footnotesize,circle,draw=black, fill=white, minimum size=4mm, inner sep=0mm}]
\graph [simple necklace layout, node sep=2mm, node distance=0mm, nodes={field,as=},horizontal=C to B] {
A[wall, label=above:1] -- B[label=below:2] -- C[label=below:3] -- A,
C -- D[label=above:4],
};
\end{tikzpicture}
\end{document}
我希望标签显示在图表外侧边缘的旁边。如有任何建议,我将不胜感激。
答案1
我认为graphdrawing
对于这种例子来说可能有点过度了。下面是一个解决方案tikz-cd
:
\documentclass{article}
\usepackage{tikz-cd}
\tikzset{field/.style={circle,fill=black, minimum size=4mm, inner sep=0mm},
wall/.style={circle,draw=black, fill=white, minimum size=4mm, inner sep=0mm}}
\begin{document}
\begin{tikzcd}[cells={nodes={}},row sep=1cm, column sep=1cm]
|[field,label=above left:4]|\arrow[d,-,"f_{34}"'] & |[wall,label=above right:1]|\arrow[d,-,"f_{12}"]\arrow[dl,-]\\
|[field,label=below left:3]|\arrow[r,-,"f_{23}"'] & |[field,label=below right:2]|
\end{tikzcd}
\end{document}
{<stuff>}
您可以通过在引号后添加 来向行标签添加许多选项"<label>"
。例如,修改f_{34}
标签:
\arrow[d,-,"f_{34}"'{pos=.7,xshift=-8pt,red}]
答案2
看完之后这个问题我发现使用 tikz quotes 库\usetikzlibrary{quotes}
可以实现我所需的基本功能,如下例所示,但我真的不明白 quotes 库在做什么,或者如何使用此库自定义位置等。如果有其他方法可以实现这一点,或者解释如何操作边缘上的标签,我将不胜感激。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs, graphdrawing,quotes}
\usegdlibrary{circular}
\begin{document}
\begin{tikzpicture}
[baseline=-6mm, font=\small, label distance=-1mm,
field/.style={circle,fill=black, minimum size=4mm, inner sep=0mm},
wall/.style={circle,draw=black, fill=white, minimum size=4mm, inner sep=0mm}]
\graph [simple necklace layout, node sep=3mm, node distance=0mm, nodes={field,as=},horizontal=C to B] {
A[wall, label=above right:1] --["\( f_{12} \)"] B[label=below right:2] --["\( f_{23} \)"] C[label=below left:3] -- A,
C --["\( f_{34} \)"] D[label=above left:4],
};
\end{tikzpicture}
\end{document}