我试图从图表的左侧画一个箭头,直到它与图相交。
但是我收到这个错误信息:
! 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);
您在图表上看不到线。因此,没有交点。在pgfplots
的axis
环境中,您需要使用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}