如何在 tikz 中将文本放在节点/点上方

如何在 tikz 中将文本放在节点/点上方

我对这个网站很陌生,对 LaTeX 也一样陌生。问题很简单:如何让一些文本显示出来节点上方而不是在里面?例如,我使用这个 tikz 东西制作了一个循环图:

\begin{figure}
\centering
\begin{tikzpicture}[scale=.7, every node/.style={circle,fill=blue!20}]
\node (n1) at (0,0) {1};
\node (n2) at (3,0) {2};
\node (n3) at (1.5,3) {3};
\draw (n1) -- (n2) -- (n3) -- (n1);
\end{tikzpicture}
\end{figure}

到目前为止,我的尝试已经让我达到了以下结果:

\begin{figure}[h]
\centering
\begin{tikzpicture}
\filldraw [blue!20] (.5,0) circle (8pt);
\node (n1) at (.2,.5) {$x$};
\filldraw [blue!20] (3.5,0) circle (8pt);
\node (n2) at (3.75,.4) {$x-1$};
\filldraw [blue!20] (1.75,3) circle (8pt);
\node (n3) at (1.75,3.5) {$x-2$};
\draw (.5,0) -- (3.5,0) -- (1.75,3) -- (.5,0);
\end{tikzpicture}
\end{figure}

但是,我不喜欢使用\filldraw指令作为“节点”,而喜欢\node使用指令。我从一些网站复制/粘贴了我开始使用 tikz 的内容,因此我不确定如何获取“全局应用”属性/设置并使它们仅适用于单个节点。我尝试了一些方法,但这没有帮助。

我想要的基本上是第二张图的效果。但是,我希望它能更加精致。

谢谢,
安迪

答案1

首先,您可以通过以下方式仅为特定节点定义样式:

\begin{tikzpicture}[scale=.7,
    mycirc/.style={circle,fill=blue!20, minimum size=0.5cm}
    ]

并通过创建节点将此样式应用于节点

\node[mycirc] at (0,0) {};

然后,您可以label创建node

\node[mycirc, label={$x-1$}] at (0,0) {};

并且您可以定义此标签的打印位置

\node[mycirc, label=right:{$x-1$}] at (0,0) {};
\node[mycirc, label=left:{$x-1$}] at (0,0) {};
\node[mycirc, label=above:{$x-1$}] at (0,0) {};
\node[mycirc, label=below:{$x-1$}] at (0,0) {};

或甚至以任意角度

\node[mycirc, label=165:{$x-1$}] at (0,0) {};

其中165是角度,单位为度。0对应于right90above等等。

因此,通过这些更改,图表的最小工作示例 (MWE) 如下所示:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.7,
    mycirc/.style={circle,fill=blue!20, minimum size=0.5cm}
    ]
    \node[mycirc,label=left:{$x$}] (n1) at (0,0) {};
    \node[mycirc,label=311:{$x-1$}] (n2) at (3,0) {};
    \node[mycirc,label=above:{$x-2$}] (n3) at (1.5,3) {};
    \draw (n1) -- (n2) -- (n3) -- (n1);

\end{tikzpicture}
\end{document}

结果

相关内容