tikz 图中项链边缘标签

tikz 图中项链边缘标签

我正在生成 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}

相关内容