我正在尝试找到两条曲线之间的交点,并从每条曲线绘制指向 x 轴的箭头。我尝试了以下代码:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\pgfplotsset{axis lines=middle,ticks={none}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[x=1cm,y=1.5cm,domain=-8:8,samples=100]
\addplot[name path global=sin,color=blue] {sin(deg(x))};
\addplot[name path global=root,color=red] {1/2)};
\foreach \s in {1,...,5}{
\draw[name intersections={of=root and sin, name=i},->]
(i-\s)--({i-\s}|-{axis cs:0,0});
}
\end{axis}
\end{tikzpicture}
\end{document}
但 LaTeX 会抱怨i-\s
未定义(为什么?)。如果我尝试
\draw[name intersections={of=root and sin, name=i},->]
\foreach \s in {1,...,5}{(i-\s)--({i-\s}|-{axis cs:0,0})};
然后它编译,但我没有得到想要的结果(只有最后一条垂直线有一个箭头,见附图)
我该怎么做才能实现我的愿望?
答案1
一种方法是在原点定义一个辅助坐标,并将循环移出环境axis
。一般来说,内部循环axis
可能比较棘手,请参阅pgfplots
手册第 8.1 节。
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\pgfplotsset{axis lines=middle,ticks={none}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[x=1cm,y=1.5cm,domain=-8:8,samples=100]
\addplot[name path global=sin,color=blue] {sin(deg(x))};
\addplot[name path global=root,color=red] {1/2)};
\coordinate (origin) at (axis cs:0,0);
\end{axis}
\foreach \s in {1,...,5}{
\draw[name intersections={of=root and sin, name=i},->]
(i-\s)--(i-\s|-origin);
}
\end{tikzpicture}
\end{document}