Pgfplots 轴拒绝记录

Pgfplots 轴拒绝记录

我正在绘制(幅度) Bode 图,出于某种原因,x 轴无法进入对数模式。我希望 x 轴从 10Hz 变为 200Hz。当我更改时,xmax=1000绘图格式正确,但轴范围不正确。如果我随后更改回xmax=200x 轴,则不再处于对数模式。此外,当我转到时,刻度也会发生变化xmax=200。(我只想要 10^1、10^2,但xmax=200会出现刻度 10^1.1、10^1.2 等)

这是我的代码(我省略了数据)。希望它是可读的,从 texstudio 复制到这篇文章会完全弄乱格式。

\documentclass[]{article}
\usepackage{pgfplots}

\begin{document}

\begin{figure}[]

\definecolor{mycolor1}{rgb}{0.00000,0.44700,0.74100}
\definecolor{mycolor2}{rgb}{0.85000,0.32500,0.09800}
\definecolor{mycolor3}{rgb}{0.92900,0.69400,0.12500}
\definecolor{mycolor4}{rgb}{0.49400,0.18400,0.55600}

\begin{tikzpicture}

\begin{axis}[
width=12.8cm,
height=3cm,
at={(0.596in,1.66in)},
scale only axis,
separate axis lines,
every outer x axis line/.append style={white!40!black},
every x tick label/.append style={font=\color{white!40!black}},
xmode=log,
xmin=10,
xmax=200,
xlabel={Frequency (Hz)},
xmajorgrids,
xminorgrids,
every outer y axis line/.append style={white!40!black},
every y tick label/.append style={font=\color{white!40!black}},
ymin=-80,
ymax=0,
ylabel={Magnitude (dB)},
ymajorgrids,
axis background/.style={fill=white},
legend style={legend pos=south west,legend cell align=left,align=left,draw=white!15!black}
]

\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

答案1

我认为您得到的结果不理想,因为(至少对于对数图而言)x 范围非常小。要解决此问题,您可以xticks自己/手动添加,方法是使用xtickten键(这需要较少的计算时间)或使用xtick其本身。

(请注意,我将您的代码缩减到绝对最小值 - 因此它现在是一个真正的 MWE - 因此可以更轻松地跟踪关键点。)

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            xmin=10,
            xmax=200,
            xmode=log,
            xtickten={1,2},     % <-- added
        ]
            % just a dummy plot so `xticks' show up as wanted
            \addplot+ [domain=10:200] {log10(x)};
        \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容