我想创建一个包含 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
和 )不会立即执行,而只有在绘制完其余图后才会执行。为此,每个命令都再次包装在其自己的范围内。因此,您也可以使用和 命令作为路径,也可以将和命令传递给命令。这将确保在绘制完图后在同一范围内执行这两个命令,因此不需要。\draw
axis
\path
name path global
\path
\fill
\pgfplotsextra{...}
name path global