我会改变让这个 TiKZ 函数绘制频率波的公式。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\newcommand{\xmax}{14}
\newcommand{\fmin}{(pi/3)}
\newcommand{\fmax}{(2*pi)}
\begin{tikzpicture}[domain=0:\xmax, samples=500]
\draw[ultra thick, red] plot (\x, {sin(deg(exp(ln(\fmin)+\x/\xmax*(ln(\fmax)-ln(\fmin)))*\x))} );
\end{tikzpicture}
\end{document}
我想我明白了它的工作原理。但我仍然无法获得我想要的结果。
我认为,绘制函数
\draw[ultra thick, red] plot (\x, {sin(deg(exp(ln(\fmin)+\x/\xmax*(ln(\fmax)-ln(\fmin)))*\x))} );
可以不使用循环(foreach 或类似方法)绘制波形,因为\begin{tikzpicture}[domain=0:\xmax, samples=500]
参数(domain= 0:\xmax
)告诉\begin{tikzpicture}
从\draw
o 到\xmax
但是,我无法改变\draw
以获得从高频到低频的图像。
我不明白三角函数。
有人能帮我修改这个函数来实现这个功能吗?
答案1
只要没有文字等,只需用来xscale=-1
反转左右即可
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\newcommand{\xmax}{14}
\newcommand{\fmin}{(pi/3)}
\newcommand{\fmax}{(2*pi)}
\begin{tikzpicture}[domain=0:\xmax, samples=500,xscale=-1]
\draw[ultra thick, red] plot (\x, {sin(deg(exp(ln(\fmin)+\x/\xmax*(ln(\fmax)-ln(\fmin)))*\x))} );
\end{tikzpicture}
\end{document}
如果您可以使用axis
环境pgfplots
,那么您还可以反转 x 轴的方向:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
samples=1000,
x dir=reverse,
hide axis
]
\addplot[domain=0:14] (x, {sin(deg(exp(ln((pi/3))+x/14*(ln((2*pi))-ln((pi/3))))*x))} );
\end{axis}
\end{tikzpicture}
\end{document}
(需要 pgfplots > 1.3)