我是该论坛的新手,但它已经帮助了我很多,谢谢!
但现在我真的陷入了困境。基本上,我正在寻找一种引用xlabel
TikZ 图片中轴的可能性。目的是读出坐标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}
并产生: