如何在 tikz 中命名一个图并将其用于交叉点?

如何在 tikz 中命名一个图并将其用于交叉点?

我想创建一个包含 3 个图、一条垂直参考线以及每个图与参考线的交点处的标记的图形。这些图来自外部表。

绘图有效,但命名绘图以便与交集库一起使用则无效。以下是示例:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{loglogaxis}[log basis x=10,log basis y=10]
    \addplot[name path=SProPath] coordinates {(1e-1,1e-7) (1e1,1e3)};
    \node[coordinate] (Ref) at (axis cs:1,1) {};
    \node[coordinate] (RefPathStart) at (Ref |- current axis.south east) {};
    \node[coordinate] (RefPathEnd) at (Ref |- current axis.north east) {};
    \path[name path=RefPath] (RefPathStart) -- (RefPathEnd);
    \fill [red,opacity=0.5,name intersections={of=SProPath and RefPath}]
      (intersection-1) circle (2pt);
  \end{loglogaxis}
\end{tikzpicture}
\end{document}

我收到以下错误:

! Package tikz Error: I do not know the path named `SProPath'. Perhaps you misspelt it.
! Package pgf Error: No shape named intersection-1 is known.

tikz 应该知道该路径SProPath。我命名图的方式是否错误?如何在“绘制”路径和图之间创建交集?

答案1

正如评论中所说,\addplot命令在其自己的范围内执行,因此使用 赋予路径的名称name path将立即丢失。为了解决这个问题,您可以使用name path global而不是name path,这将使名称在所有其他范围内可用。

示例中的其他路径也是如此:环境内的TikZ 命令(如\path和 )不会立即执行,而只有在绘制完其余图后才会执行。为此,每个命令都再次包装在其自己的范围内。因此,您也可以使用和 命令作为路径,也可以将和命令传递给命令。这将确保在绘制完图后在同一范围内执行这两个命令,因此不需要。\drawaxis\pathname path global\path\fill\pgfplotsextra{...}name path global

相关内容