我在 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=3
在axis
选项中使用以指定您想要在 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}