我遇到了一个问题:$f(x) = a + b.sin(cx + d)$ 的图形,当 d 不为空时,在 tikz/pgfplot 中不起作用。有人能帮忙吗?
我认为问题在于我不知道 tikz/pgfplot 如何转换为度数。我尝试过 (sin(\x + d) r); (sin((\xr) + (dr))) 和其他变体,但这不起作用。
答案1
我认为使用 PGFPlots 可能比使用 TikZ\draw plot
机制更容易。您可以通过设置来告诉 PGFPlots 使用弧度作为三角函数trig format plots=rad
:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=0:2*pi,
axis lines=middle,
enlargelimits=true,
trig format plots=rad
]
\addplot [orange, thick, samples=100] {sin( x + 1.047196 )};
\end{axis}
\end{tikzpicture}
\end{document}
如果您确实想为此使用普通的 TikZ,则需要使用\draw plot (\x, {sin( (\x + 1.047196)r });
(将里面的整个表达式sin(...)
从弧度转换为度):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [orange, thick] plot [samples=100, domain=0:2*pi] (\x, {sin( (\x + 1.047196)r });
\end{tikzpicture}
\end{document}
答案2
您还可以使用该datavisualization
库来绘制图形:
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
\begin{tikzpicture}
\datavisualization [school book axes,
visualize as line=sin,
sin={style={thick, orange}}
]
data[set=sin, format=function] {
var x : interval [0:2*pi] samples 100;
func y = sin((\value{x} + 1.047196) r);
};
\end{tikzpicture}
\end{document}
有关 rad 位置的解释,r
请参阅 Jake 的回答。