答案1
欢迎!如果您想绘制真实数据,您需要真实数据。此答案假设您希望制作所描绘图的卡通。正如评论中宣传的那样,这可以相当容易地使用 pgfplots 来完成。可以定义一个假峰值函数(实际上并不是太假,因为这是峰值的 Breit-Wigner 形式),它取决于绘图变量x
,并且还有两个参数控制位置和宽度。如果您添加其中几个(使用前因子固定相应峰值的高度),您将得到
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.16}% <- if you have an older installation, try 1.15 or 1.14
\begin{document}
\begin{tikzpicture}[declare function={%
peak(\x,\u,\v)=ifthenelse(\x>\u*(1-\v) && \x<\u*(1+\v),
-\v/(1+\v)+\v/(\v+pow((\x-\u)/(\u*\v),2)),0);}]
\begin{axis}[xmode=log,
xminorgrids,
ymajorgrids,
grid style={densely dashed,thin},
xtick={1,10,100,1000,10000,100000},
xticklabels={$1\mathsf{kHz}$,$10\mathsf{kHz}$,$100\mathsf{kHz}$,
$1\mathsf{MHz}$,$10\mathsf{MHz}$},
yticklabel=$\mathsf{\pgfmathprintnumber{\tick}}\mathsf{A}$,
ytick={0,0.8,...,8.8},
ymax=8.1]
\addplot[blue,no marks,domain=0.5:30000,samples=501]
{7.9*peak(x,130,0.1)+0.3*peak(x,170,0.2)+0.8*peak(x,220,0.1)};
\end{axis}
\end{tikzpicture}
\end{document}
如果添加更多峰值,则可以高质量地重现屏幕截图。至于时间:在五年前的 MacBook Pro 上,编译需要 5 秒钟。您可以使用来加快速度,gnuplot
但我个人认为 5 秒钟还不错。您可能还想添加其他内容,例如siunits
单位等,但我更喜欢将此处的代码保持在最低限度。