答案1
我大胆猜测一下,该图是用 TikZ 绘制的,但使用的是 gnuplot。我能够很好地重现该图——除了实际数据,我用一个简单的 log(x) 图代替了它。
gnuplot 脚本如下所示:
# might add a hashbang for gnuplot here
set style line 1 lt rgbcolor "0x7799f0" lw 2 pt 6
set style line 2 lt rgbcolor "0xcccccc" lw 1 pt 6
unset border
set border 1 + 2 + 4 + 8
unset x2tics
unset y2tics
unset mx2tics
unset my2tics
set logscale xy 10
show logscale
set ytics format "$10^%T$"
set xtics format "$10^%T$"
set xlabel 'frequency (Hz)'
set ylabel 'gain'
set xrange[10:1E07] noextend
set yrange[1:100]
set xtics 10, 10, 1E07 logscale
set ytics 1, 10, 1E02 logscale
set mytics
set mxtics
show mxtics
show mytics
set grid ls 2
plot [10:1E07] log(x) ls 1
set terminal lua tikz latex color fontscale 1.0
set output 'experimental.tex'
refresh
set output
set terminal aqua
注意我在这里使用的是 macOS(因此是“aqua”终端)。您必须读入数据,而不是像我一样使用 log(x) plot 命令。您可以在中看到读取外部数据的示例我的一个 GitHub 存储库; 寻找fourthirdsprofile.gpi
。
一旦将输出写入experimental.tex
,您将需要通过 将其包含到另一个 TeX 文档中来编译图形\input{}
。这是一个简单的包装器。
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{graphicx,xcolor,lscape}
\usepackage{tikz, pgf}
\usepackage[left=0.5in,right=0.5in,top=1.0in,bottom=0.5in]{geometry}
\usepackage[utf8x]{inputenc}
\SetUnicodeOption{mathletters}
\usepackage{gnuplot-lua-tikz}
\pagestyle{empty}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{\gpbboxborder}
\pagestyle{empty}
\begin{document}
\begin{landscape}
\input{experimental.tex}
\end{landscape}
\end{document}
% I added this "midband" label directly in the TikZ code,
% which is easier than doing it via gnuplot:
\draw[<-](4,8.8) -- (5.25,8.8) node[xshift=1cm]{midband};
\draw[->](7.25,8.8) -- (8.75,8.8);
\draw[](4,9) -- (4,7.8);
\draw[](8.75,9) -- (8.75,7.8);
% drop these four lines into the gnuplot output near the
% end of the tikzpicture and you should get an easily modified label.
祝愿本文取得成功。
编辑:修复了我的指数中的一个错误;x 轴范围现已修复。