TikZ 画三角函数图像

用 TikZ 画三角函数相关的图像时, 要注意角度 (degree) 和弧度 (radian) 的转化.

例如画 $\arcsin x$, $x \in [-1,1]$, 在 TikZ 中函数名是 asin, 直接得到的是 degree, 想要得到 radian, 需要函数 rad. 例如 asin(0.5) 得到的是 $30$~(degree), 而 rad(asin(0.5)) 得到的才是 $\frac\pi6$~(radian). 当然了, 仅仅需要画反三角函数的图像完全可以用参数方法 ({sin(\y r)}, \y), 前提是给 \draw 加一个参数 variable = \y, 其中 (\y r) 代表 \y 的单位按照 radian 算. 另外还可以用函数 deg 转换 radian 到 degree, 即 deg(pi) 就直接是 $180$~(degree).

上图的代码如下, 有兴趣的可以看看 (Ubuntu 20.04 + TeX Live 2020 + XeLaTeX).

\documentclass{standalone}

\usepackage{tikz}
\usepackage{upgreek}

\begin{document}

\begin{tikzpicture}[>=stealth, scale=2, transform shape]
\draw[->] (-pi,0) node[below] {$-\uppi$} -- (-pi/2,0) node[below] {$-\frac\uppi2$} -- (-1,0) node[below] {$-1$} -- (1,0) node[below] {$1$} -- (pi/2,0) node[below] {$\frac\uppi2$} -- (pi,0) node[below] {$\uppi$} -- (3*pi/2,0) node[below] {$x$};
\draw[->] (0,-pi) node[left] {$-\uppi$} -- (0,-1) node[left] {$-1$} -- (0,1) node[left] {$1$} -- (0,pi) node[left] {$\uppi$} -- (0,1.2*pi) node[left] {$y$};

\draw[domain=-pi:pi,smooth,variable=\y] plot ({sin(\y r)},\y);

\draw[domain=-1:1,smooth,variable=\y] plot ({rad(asin(\y))},\y) node[right] {$x = \arcsin y$};
\draw[domain=-1:1,smooth,variable=\y] plot ({rad(acos(\y))},\y) node[left=1em] {$x = \arccos y$};

\foreach \i in {-1,-0.9,-0.8,...,1}
{
	\draw ({rad(asin(\i))},\i)  circle (1pt);
}
\foreach \i in {-1,-0.9,-0.8,...,1}
{
	\draw ({rad(acos(\i))},\i)  circle (1pt);
}
\end{tikzpicture}

\end{document}