将节点添加到 pgfplots-plot

将节点添加到 pgfplots-plot

我在 TikZ 中有以下情节:

\begin{tikzpicture}[trim axis left]
\begin{axis}[domain=2:6,
  samples=100,
  enlarge x limits=false,
  no markers,
  ymin=-0.5,ymax=1,
  axis lines=left,xtick=\empty,ytick=\empty]
\addplot +[thick, black] {ln(4/x)};
\node [left]  at (3,0) {$F$};
\end{axis}
\end{tikzpicture}

如您所见,我尝试在坐标处添加一个节点(3,0),但是它没有显示。我缺少什么才能让它显示出来?

答案1

您看不到节点的原因是,默认情况下\node,的坐标\draw以及 TikZ 中的类似绘图宏不在轴的坐标中pgfplots。此外,pgfplots会剪掉轴限制之外的所有内容。因此,您的节点最终超出了轴限制,并被剪掉了。

要实际使用 的轴坐标\node,您可以明确定义要使用的坐标系axis cs:

\node at (axis cs:3,0) {..};

或者也axis cs可以通过添加来设为默认

\pgfplotsset{compat=1.11}

或某个更高的版本号。目前最新版本是 1.17,因此compat=1.17是最高有效版本号。(compat我认为始终指定设置可能是一个好主意,一方面,即使是最低可能值(1.3)也会改善 的放置ylabel。)

但是,根据评论,您实际上想要的是为 x=3 添加自定义刻度标签。通常的做法是xtick=3axis选项中使用以指定您想要在 x=3 处添加刻度,然后使用xticklabels=$F$以指定要用于标签的文本。

更一般地,您可以在{}两者中使用逗号分隔的列表,例如xtick={3,7}, xticklabels={foo,bar},或者使用点符号表示范围,例如,1,3,...,10这将获得从 1 到 9 的奇数。

一个简单的例子:

\documentclass{article}
\usepackage{pgfplots} 
\pgfplotsset{compat=1.17} % it's recommended to use an explicit version number
\begin{document}
\begin{tikzpicture}[trim axis left]
\begin{axis}[domain=2:6,
  samples=100,
  enlarge x limits=false,
  no markers,
  ymin=-0.5,ymax=1,
  axis lines=left,xtick=3,xticklabels=$F$,ytick=\empty]
\addplot +[thick, black] {ln(4/x)};

% with the compat setting used above this adds the node at 3,0 in the axis
\node [left]  at (3,0) {$F$};

% while this would work regardless of the compat setting
\node [right]  at (axis cs:3,0) {$G$};
\end{axis}
\end{tikzpicture}
\end{document}

答案2

您可以在轴环境内定义坐标,并在外部绘制它们以避免剪切。以下假设您希望 x=3,[domain=2:6]但位于图的底部边缘。

\documentclass{standalone}
\usepackage{pgfplots} 

\begin{document}
\begin{tikzpicture}[trim axis left]
\begin{axis}[domain=2:6,
  samples=100,
  enlarge x limits=false,
  no markers,
  ymin=-0.5,ymax=1,
  axis lines=left,xtick=3,xticklabels=$F$,ytick=\empty]
\addplot +[thick, black] {ln(4/x)};
\coordinate (A) at (axis cs:3,0);% y value unimportant
\coordinate (B) at (rel axis cs: 0,0);% lower left corner
\end{axis}
\node [left]  at (A|-B) {$F$};
\end{tikzpicture}
\end{document}

演示

相关内容