在 PGFPlots 中将 'semilogyaxis' 与 'groupplot' 结合使用

在 PGFPlots 中将 'semilogyaxis' 与 'groupplot' 结合使用

使用 PGFPlots 的 groupplot 库,命令 \nextgroupplot 可以采用 \begin{axis} 过去采用的参数。因此,为其提供选项“ymode=log”应该可以有效地使该图成为 semilogyaxis 图。但是,当我这样做时,我确实会收到错误:

缺失数字,视为零。

这很奇怪,因为如果我给它 xmode=log 它就可以正常工作(尽管给出了一个空的图)。

最小运行示例如下:

\documentclass[11pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}

\usepgfplotslibrary{groupplots}

\begin{document}
  \begin{tikzpicture}[scale=0.6]
    \begin{groupplot}[ group style={group name=my plots, group size=2 by 1}, ymax=1, restrict y to domain=0:1]
      \nextgroupplot[ymode=log]%
      \addplot+[domain=0:6,mark=o,smooth,samples=20] {2^(-1)*exp(x)};%
      \addplot+[domain=0:6,mark=square,smooth,samples=20] {1-((1-2^(-1))/exp(x))};%

      \nextgroupplot%
      \addplot+[domain=0:6,mark=o,smooth,samples=20] {2^(-3)*exp(x)};%
      \addplot+[domain=0:6,mark=square,smooth,samples=20] {1-((1-2^(-3))/exp(x))};%
    \end{groupplot}
  \end{tikzpicture} 
\end{document}

这些方程式过去通常绘制在半逻辑轴上,但我希望它们绘制在群图中。因此函数域等不应该是问题。

答案1

您不能限制域名轴。对数未定义为零。以下内容对我有用。

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}

\begin{document}
  \begin{tikzpicture}[scale=0.6]
    \begin{groupplot}[%
      group style={%
        group name={my plots},
        group size=2 by 1
      },
      ymax=1,
%      restrict y to domain=0:1   % <<<<< This is not allowed
    ]
      \nextgroupplot[ymode=log]%
      \addplot+[domain=0:6,mark=o,smooth,samples=20] {2^(-1)*exp(x)};%
      \addplot+[domain=0:6,mark=square,smooth,samples=20] {1-((1-2^(-1))/exp(x))};%
      \nextgroupplot%
      \addplot+[domain=0:6,mark=o,smooth,samples=20] {2^(-3)*exp(x)};%
      \addplot+[domain=0:6,mark=square,smooth,samples=20] {1-((1-2^(-3))/exp(x))};%
    \end{groupplot}
  \end{tikzpicture}
\end{document}

相关内容