pgfplots 直方图中缺少条形图

pgfplots 直方图中缺少条形图

当我尝试绘制文件中的一些数据时,我遇到了 pgfplots 问题。我使用以下代码

\begin{figure}[p]
\centering
\begin{tikzpicture} 
  \begin{axis}[ybar interval,xtick=,width=\textwidth]

    \addplot+[hist={data=x,bins=30}]
            file {Data/Poisson/Poisson_Cs137_150.TKA};
  \end{axis}
\end{tikzpicture}
\caption[]{}
\end{figure}

至于箱数,我使用了数据集的最大值(仅包含整数),因为我希望每个整数都有一个箱。问题是结果如下:

Histogram

如您所见,有一些缺失的列,而 Matlab 正确显示了缺失的列(我在数据集中检查,值 8 出现了多次!)。

有人知道问题出在哪里吗?

附录:这是我的序言

\documentclass[%
    10pt,%
    a4paper,%
    onside,%
    headinclude,%
    footinclude,%
    BCOR5mm,%
    captions=tableheading]%
        {scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

%\usepackage[english]{babel}

\usepackage{indentfirst}

\usepackage{mathtools,amsmath}

    \renewcommand{\vec}{\mathbold}

    \DeclarePairedDelimiter{\abs}{\lvert}{\rvert}

\usepackage{booktabs}

\usepackage{pgfplots}
    \pgfplotsset{%
        compat=newest,%
        /pgf/number format/use comma,%
        /pgf/number format/1000 sep={\,},%
        /pgf/number format/min exponent for 1000 sep=4}

\usepackage[%
    output-decimal-marker={,}]
        {siunitx}

\usepackage{caption}

\usepackage{subfig}

\usepackage[%
    nochapters,%
    beramono,%
    eulermath,%
    pdfspacing,%
    listings]%
        {classicthesis}

此外,很抱歉我无法提供 MWE,但我无法使用任意短数据集重现该问题(对于具有较少箱体的数据集,pgfplots 可以正常工作……)

编辑1:我注意到,如果我们从 0(缺失)开始计算列,则第 5 列位于标签 5 的正上方,而第 20 列位于标签 20 的右侧……也许缺失的列代表非整数值?可能吗?

编辑2:这是 MWE

\documentclass{standalone}

\usepackage{pgfplots}
    \pgfplotsset{%
        compat=newest,%
        /pgf/number format/use comma,%
        /pgf/number format/1000 sep={\,},%
        /pgf/number format/min exponent for 1000 sep=4}

\begin{document}

\begin{tikzpicture} 
    \begin{axis}[ybar,xtick=,width=\textwidth]

    \addplot+[hist={data=x,bins=30}]
            file {Data/Poisson/Poisson_Cs137_150.TKA};
\end{axis}
\end{tikzpicture}

\end{document}

以下是数据:

16
13
12
13
12
11
10
16
11
19
12
18
14
12
13
16
8
9
13
13
12
14
10
14
15
15
11
16
17
9
15
18
11
18
7
8
13
17
16
8
21
17
7
5
9
13
13
13
14
16
10
12
10
10
15
13
11
14
15
15
11
17
13
8
11
14
13
9
12
17
13
18
10
11
8
10
25
17
9
16
13
10
14
15
12
17
21
8
14
13
10
13
16
21
12
11
19
15
8
10
9
17
7
13
12
7
10
12
13
12
11
15
9
14
11
16
17
13
11
12
12
15
9
15
9
9
6
11
8
9
12
15
11
14
15
13
14
12
16
18
10
12
23
15
13
8
11
10
13
12
14
12
12
15
10
16
11
11
20
12
10
11
20
14
19
9
11
14
12
13
15
13
12
10
11
12
11
15
11
11
17
11
18
8
14
19
9
21
6
13
15
19
13
12
7
5
9
16
18
16
20
8
14
15
18
11
14
9
23
15
11
12
12
16
8
18
13
16
17
15
14
11
21
11
15
13
12
13
8
13
15
12
12
18
19
15
15
12
13
15
14
9
15
15
17
4
10
11
16
10
8
12
14
17
12
10
12
13
16
20
13
20
13
12
14
13
12
14
11
16
13
6
11
12
13
13
17
7
12
22
11
19
14
17
18
30
19
19
12
6
8
24
11
14
20
12
16
10
12
17
14
18
8
13
13
15
10
18
15
13
13
12
17
11
15
11
8
13
12
15
15
8
19
17
13
14
11
10
10
18
16
12
11
9
13
10
16
14
7
11
16
19
16
10
16
18
6
16
13
7
10
12
9
11
12
16
11
23
15
8
9
11
9
9
10
11
14
17
9
12
13
11
13
13
12
15
11
13
17
12
13
15
17
10
12
13
9
12
9
18
7
8
10
15
14
16
10
18
13
9
22
17
8
12
17
9
12
11
6
11
12
7
9
12
15
18
12
11
11
9
11
14
12
10
11
7
10
17
11
17
12
11
14
13
11
16
14
14
10
14
10
9
12
7
13
10
22
8
13
15
15
14
22
10
11
11
12
20
14
12
16
14
17
13
12
12
19
13
17
14
12
14
18
13
9
12
11
12
16
12
14
15
11
14
9
14
10
15
16
17
13
13
15
11
15
14
15
13
10
12
14
18
13
7
15
15
10
13
13
16

最后这是具有相同数据的 Matlab 直方图: Matlab histogram

答案1

问题在于您根据数据指定的箱子数量。

对于您的数据,最小值为4,最大值为30。您要求将此范围划分为 30 个间隔,因此对于您的数据,这些间隔的长度将小于1。由于您的数据仅包含整数,因此这些箱子中的一些箱子很可能是空的。

您可以减少箱子的数量,或者可能更相关地指定数据范围的最大值和最小值:

Sample output

\documentclass[%
    10pt,%
    a4paper,%
    onside,%
    headinclude,%
    footinclude,%
    BCOR5mm,%
    captions=tableheading]%
        {scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

%\usepackage[english]{babel}

\usepackage{indentfirst}

\usepackage{mathtools,amsmath}

    \renewcommand{\vec}{\mathbold}

    \DeclarePairedDelimiter{\abs}{\lvert}{\rvert}

\usepackage{booktabs}

\usepackage{pgfplots}
    \pgfplotsset{%
        compat=newest,%
        /pgf/number format/use comma,%
        /pgf/number format/1000 sep={\,},%
        /pgf/number format/min exponent for 1000 sep=4}

\usepackage[%
    output-decimal-marker={,}]
        {siunitx}

\usepackage{caption}

\usepackage{subfig}

\usepackage[%
    nochapters,%
    beramono,%
    eulermath,%
    pdfspacing,%
    listings]%
        {classicthesis}

\begin{document}
\begin{figure}[p]
\centering
\begin{tikzpicture} 
  \begin{axis}[ybar interval,xtick=,width=\textwidth]

    \addplot+[hist={data=x,bins=30,data max=30,data min=0}]
            file {Poisson_Cs137_150.TKA};
  \end{axis}
\end{tikzpicture}
\caption[]{}
\end{figure}
\end{document}

相关内容