我想在同一个坐标系中绘制$\sin(2\pi x)
和$\cos 2 \pi x$
$\in [3/4, 5/4]$
。我该怎么做?
\begin{tikzpicture}
\begin{axis}[domain=3/4:5/4,legend pos=outer north east]
\addplot {sin(deg(x))};
\addplot {cos(deg(x))};
\legend{$\sin(2 \pi x)$,$\cos(2 \pi x)$}
\end{axis}
\end{tikzpicture}
问题是 addplot。我该如何绘制它,{sin(deg(2\pi x))}; 不起作用?
答案1
在 中pgfplots
,三角函数以度为默认输入。如果我们有一个以弧度为单位的值(如x
本例),我们可以使用deg()
函数将其转换为度。进一步乘以x
将2*pi
产生一个周期为一弧度的函数。
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=3/4:5/4,legend pos=outer north east]
\addplot {sin(deg(2*pi*x))};
\addplot {cos(deg(2*pi*x))};
\legend{$\sin(2 \pi x)$,$\cos(2 \pi x)$}
\end{axis}
\end{tikzpicture}
\end{document}
编辑:正如 percusse 在评论中指出的那样,更全局的修复方法是使用trig format=rad
或trig format plots=rad
。前者会更改所有参数的三角格式,而后者只会更改三角函数(sin、cos、tan 等)的格式。以下是示例:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=3/4:5/4,legend pos=outer north east,trig format plots=rad]
\addplot {sin(2*pi*x)};
\addplot {cos(2*pi*x)};
\legend{$\sin(2 \pi x)$,$\cos(2 \pi x)$}
\end{axis}
\end{tikzpicture}
\end{document}
答案2
Erik 的回答很完美,但这里还有另一个使用 pgfplots 的答案。我想展示一些可用于绘制图表的功能,例如定义函数、标记轴等。请注意,您无需定义函数,只需在代码行前面写上函数即可轻松绘制函数\addplot
。
% pdflatex
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\pgfmathdeclarefunction{S}{2}{\pgfmathparse{sin(deg(#1*#2))}}
\pgfmathdeclarefunction{C}{2}{\pgfmathparse{cos(deg(#1*#2))}}
\begin{axis}
[
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-\frac{3\pi}{2}$, $-\pi$, $\frac{\pi}{2}$,
$\frac{\pi}{2}$, $\pi$, $\frac{3\pi}{2}$, $2\pi$
},
axis lines = center,
grid=both,minor tick num=1,
xlabel=$x$,ylabel=$y$,
tick align=inside,
legend style={at={(0.5,-0.1)},
anchor=north,legend columns=2},
legend entries={$\sin 2x$\\$\cos 2x$\\},
domain=-2*pi:2*pi,
samples=200,
every axis y label/.style={rotate=0, black, at={(0.5,1.05)},},
every axis x label/.style={rotate=0, black, at={(1.05,0.5)},},
]
\addplot [red,thick] {S(2,x)};
\addplot [blue,thick] {C(2,x)};
\end{axis}
\end{tikzpicture}
\end{document}