如何在 pgfplot 中绘制直到与绘图线相交?

如何在 pgfplot 中绘制直到与绘图线相交?

我试图从图表的左侧画一个箭头,直到它与图相交。

在此处输入图片描述

但是我收到这个错误信息:

! Package pgf Error: No shape named intersection-1 is known.

我知道这可能意味着没有交集。但我不明白这两件事怎么可能不相交……

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

\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[ymin=0,ymax=100,xmin=5E-13,xmax=3E-4,
xlabel=Concentration,
ylabel=Effect (\%),
axis lines=left,
width=2\marginparwidth,
height=1.4\marginparwidth,
ytick={0,25,50,75,100},
xmode = log,
tick label style = {font=\footnotesize},
]
\addplot [color=black, name path=P] coordinates {
    (1E-4, 0)
    (1E-5, 0)
    (1E-6, 2)
    (1E-7, 21)
    (1E-8, 66)
    (1E-9, 88)
    (1E-10, 94)
    (1E-11, 95)
    (1E-12, 96)
    };
\addplot [only marks] coordinates {
    (1E-4, 0)
    (1E-5, 0)
    (1E-6, 2)
    (1E-7, 21)
    (1E-8, 66)
    (1E-9, 88)
    (1E-10, 94)
    (1E-11, 95)
    (1E-12, 96)
    };

\path [name path=A] (1E-12, 50) -- (1E-4, 50);
\path [name intersections={of=A and P}];
\draw[->, thick] (1E-12, 50) -- (intersection-1); 
    \end{axis}

\end{tikzpicture}
\end{figure}

\end{document}

答案1

调试这类东西的最佳方法是先将 更改为 ,\path这样\draw您就可以看到要查找的交叉点。使用\draw水平线:

\draw [name path=A] (1E-12, 50) -- (1E-4, 50);

您在图表上看不到线。因此,没有交点。在pgfplotsaxis环境中,您需要使用axis cs坐标系。因此,将其更改为:

\draw [name path=A] (axis cs: 1E-12, 50) -- (axis cs: 1E-4, 50);

您可以看到水平线。将上面的内容改回\path您获得的内容:

在此处输入图片描述

代码:

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

\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[ymin=0,ymax=100,xmin=5E-13,xmax=3E-4,
xlabel=Concentration,
ylabel=Effect (\%),
axis lines=left,
width=2\marginparwidth,
height=1.4\marginparwidth,
ytick={0,25,50,75,100},
xmode = log,
tick label style = {font=\footnotesize},
]
\addplot [color=black, name path=P] coordinates {
    (1E-4, 0)
    (1E-5, 0)
    (1E-6, 2)
    (1E-7, 21)
    (1E-8, 66)
    (1E-9, 88)
    (1E-10, 94)
    (1E-11, 95)
    (1E-12, 96)
    };
\addplot [only marks] coordinates {
    (1E-4, 0)
    (1E-5, 0)
    (1E-6, 2)
    (1E-7, 21)
    (1E-8, 66)
    (1E-9, 88)
    (1E-10, 94)
    (1E-11, 95)
    (1E-12, 96)
    };

\path [name path=A] (axis cs: 1E-12, 50) -- (axis cs: 1E-4, 50);
\path [name intersections={of=A and P}];
\draw[-latex, thick, red] (1E-12, 50) -- (intersection-1); 
\end{axis}

\end{tikzpicture}
\end{figure}

\end{document}

相关内容