我正在用 tikz 绘制 cos(2x),想要在 x 轴和 x=pi-1.2 和 x=pi+1.2 的图之间绘制线段,但 pgfmathsetmacro 计算出的值似乎不正确(这些值应该相等,但事实并非如此)
这是我使用的代码:
\documentclass[crop,tikz]{standalone}
\usepackage{pgf,tikz,tkz-tab}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=latex,x=1cm, y=1cm]
\draw[->] (0,-1.2) -- (0,1.5);
\draw[->] (-0.5,0) -- (5,0);
\draw [variable=\x, domain=pi/2:3*pi/2,samples=200] plot(\x,{cos(2*\x r)});
\foreach \x in {pi+1.2,pi-1.2}{
\pgfmathsetmacro{\y}{cos(2*\x r)};
\draw [shift={(\x,0)}] (0,0) -- (0,\y) node[above] {\y};
}
\end{tikzpicture}
\end{document}
以下是我得到的截图:
我这里犯了什么错误?
答案1
您只需应用括号即可。否则 pgf 将看到类似以下内容的内容2*pi+1.2 r
。
\documentclass[crop,tikz]{standalone}
\usepackage{pgf,tikz,tkz-tab}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=latex,x=1cm, y=1cm]
\draw[->] (0,-1.2) -- (0,1.5);
\draw[->] (-0.5,0) -- (5,0);
\draw [variable=\x, domain=pi/2:3*pi/2,samples=200] plot(\x,{cos(2*\x r)});
\foreach \x in {pi+1.2,pi-1.2}{
\pgfmathsetmacro{\y}{cos(2*(\x) r)};
\draw [shift={(\x,0)}] (0,0) -- (0,\y) node[above] {\y};
}
\end{tikzpicture}
\end{document}