PGFPlots 图表被截断,顶部被切掉

PGFPlots 图表被截断,顶部被切掉

我正在尝试使用 pgfplots 绘制麦克斯韦-玻尔兹曼曲线。在网上搜索密度函数后,我得到了以下结果:

\begin{tikzpicture}

    \def\kB{1.3806488e-23}% boltzmann constant
    \def\temperature{298}% room temperature
    \def\Beta{1/(\kB*\temperature)}
    \def\amu{1.660538921e-27}% atomar mass unit in kg
    \def\mass{1*\amu}

    \begin{axis}[
        axis lines  = left,
        domain      = 0:6000,
        xlabel      = $v$,
        ylabel      = $P(v)$,
        xtick       = \empty,
        ytick       = \empty
    ]

    \addplot[color=black]{
        sqrt(2/pi)*(\mass*\Beta)^(3/2)*x^2*exp(-.5*\mass*\Beta*x^2)
    };

    \end{axis}
\end{tikzpicture}

曲线和所有东西都很好,问题是,正如标题所示,曲线的顶部被切断了。我认为这与某种自动缩放有关,因为在通过执行 (数学上)拉伸图形后0.5 * f(x),一切似乎都保持不变。

下面是一张可以表达我的意思的图片: 在此处输入图片描述

可以看出,曲线的峰值被截断。

全局设置如下:

\pgfplotsset{
    compat          = 1.13,
    samples         = 100,
    scaled ticks    = false,
    width           = 100mm,
    height          = 60mm
}

谢谢!

答案1

每当使用非方框轴样式时,都会看到此伪影。如果使用方框图,轴方框线会覆盖此区域,因此看不到剪辑。

除了 corporal 建议的更改之外,您还可以通过添加轴选项来避免每个轴上的裁剪clip=false。请注意,这可能不适合绘制某些函数,特别是那些不连续性趋向于 ±∞ 的函数。但在这种情况下,它可以很好地防止裁剪而无需调整轴限制。

\documentclass[border=10pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{
  compat  = 1.13,
  samples = 100,
}

\def\kB{1.3806488e-23}% boltzmann constant
\def\temperature{298}% room temperature
\def\Beta{1/(\kB*\temperature)}
\def\amu{1.660538921e-27}% atomar mass unit in kg
\def\mass{1*\amu}
\def\mB{\mass*\Beta}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  axis lines = left,
  domain     = 0:6000,
  xlabel     = $v$,
  ylabel     = $P(v)$,
  xtick      = \empty,
  ytick      = \empty,
  clip       = false,
]
  \addplot[black]{sqrt(2/pi)*(\mB)^(3/2)*x^2*exp(-.5*\mB*x^2)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

以下是修复该问题的几种可能方法。enlarge y limits={abs=0.4pt},在轴选项后添加ytick = \empty,不要忘记 \empty 后面的额外逗号。使用是abs=0.4pt因为这是图的线宽,所以它会删除顶部的截断或剪辑,但也会在水平轴上添加少量填充。

您可以尝试的另一件事是添加ymax={0.0004},或甚至ymax={0.00038},添加到轴选项。这些是通过测试一些不同的ymax值获得的。

相关内容