如何引用轴标签,例如 xlabel

如何引用轴标签,例如 xlabel

我是该论坛的新手,但它已经帮助了我很多,谢谢!

但现在我真的陷入了困境。基本上,我正在寻找一种引用xlabelTikZ 图片中轴的可能性。目的是读出坐标xlabel。稍后我想使用它们根据这些坐标以特定方式定位另一个节点。

xlabel style={name=xlabel}尝试使用 在轴选项中指定 xlabel 名称。在轴内,我想使用 指向它xlabel.north(就像可以使用 指向轴本身一样current axis.north)。

不幸的是,它没有起作用。有人告诉我:

no shape named xlabel is known

所以我猜想轴选项中的命名xlabel是错误的。有办法解决这个问题吗?

我希望这个问题的表述能让人明白我想要表达的意思...

答案1

您可能试图在xlabel节点创建之前访问它(如果没有示例文档很难判断)。

如果将绘图命令放在 内axis,标签尚不存在(只有在轴完成后才会放置)。您必须将其放在轴外:

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xlabel=X label,
    xlabel style={name=xlabel}
  ]
  \addplot {rnd};
  \end{axis}
  \draw [ultra thick, latex-] (xlabel.south east) -- ++(1,-1);
\end{tikzpicture}
\end{document}

答案2

假设您使用的是“纯”tikz(即:否,pgfplots这将是一个完全不同的问题),那么想法是在线条的末端命名一些坐标,然后构建一个包含两者的节点(使用fit库)。可以根据需要命名此节点。您只能为节点(和坐标,它们是特定类型的无量纲节点)命名。

以下是 MWE:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}

\begin{tikzpicture}
\coordinate (start) at (0,0);
\coordinate (end) at (3,0);
\draw[->] (start) -- (end);
\node[fit=(start) (end), draw=none, inner sep=1pt] (axis) {};

% The line is contained in node "axis" which we can use
\draw (axis.south) node[below] {Foo}
      (axis.east)  node[right] {Bar}
      (axis.west)  node[left]  {XX};
\end{tikzpicture}
\end{document}

并产生:

在此处输入图片描述

相关内容