在 pgfplots 中堆叠直方图

在 pgfplots 中堆叠直方图

堆叠无法正常工作。这是我得到的结果:

在此处输入图片描述

这可能是不同垃圾箱的问题,但即使限制它们也不起作用(关于常见垃圾箱的稍微相关的问题是这里这里, 和这里。然而,它们并没有什么帮助。

这是我上面的代码:

\documentclass{article}
\usepackage[]{graphicx}
\usepackage{tikz,pgfplots,pgfplotstable}
\usetikzlibrary{patterns}
\usepgfplotslibrary{statistics}
\pagestyle{empty}

\begin{document}

    \begin{tikzpicture}
        \begin{axis}[
            ybar stacked,normalsize,width=10cm,enlargelimits=0,bar width=0.6cm,
            ytick={0,200,400,600,800,1000},
            xtick style={draw=none},
            xtick={0,20,...,100},
            ]
            \addplot+[hist={bins=25,data min=-2,data max=102}] table [x,y index=0] {w1.csv};
            \addplot+[hist={bins=25,data min=-2,data max=102}] table [x,y index=0] {w2.csv};
            \addplot+[hist={bins=25,data min=-2,data max=102}] table [x,y index=0] {w3.csv};
            \end{axis}
    \end{tikzpicture}

\end{document}

我的数据(数字)来自三个文件,每个文件有一列。文件非常大。因此,我将使用一个小例子来清楚地说明问题。

这是示例代码:

\documentclass{article}
\usepackage[]{graphicx}
\usepackage{tikz,pgfplots,pgfplotstable}
\usetikzlibrary{patterns}
\usepgfplotslibrary{statistics}
\pagestyle{empty}
\usepackage{filecontents}

\begin{filecontents}{w.csv}
1.4
1.1
2.2
3.3
4.1
4.5
6.1
6.6
6.6
7.4
8.1
8.3
9.1
9.1
9.1
\end{filecontents} 

\begin{document}

\begin{tikzpicture}
    \begin{axis}[ybar stacked,xtick={0,1,...,10},ytick={0,1,...,6}]
        \addplot+[hist={bins=10,data min=0,data max=10}] table [x,y index=0] {w.csv};
        \addplot+[hist={bins=10,data min=0,data max=10}] table [x,y index=0] {w.csv};
        \end{axis}
\end{tikzpicture}

\end{document}

请注意,为了简单起见,我使用同一个文件。因此,堆叠直方图的模式应该很简单。然而,这是输出:

在此处输入图片描述

答案1

我遇到了同样的问题,但找不到与此主题相关的其他帖子。由于 pgfplots 1.15 中未解决此问题,因此我的解决方案是自己简单地“堆叠”文件,例如

data-1.txt = [ 1 2 3 4 5 ]
data-2.txt = [ 1 3 3 4 5 ]
data-1-and-2.txt = [ 1 2 3 4 5 1 3 3 4 5 ]

然后先绘制 data-1-and-2.txt,然后绘制 data-1.txt,然后省略

ybar stacked

在轴环境中

\begin{tikzpicture}
  \begin{axis}[xtick={0,1,...,10},ytick={0,1,...,6}]
    \addplot+[hist={bins=10,data min=0,data max=10}] table [x,y index=0]  {data-1-and-2.txt};
    \addplot+[hist={bins=10,data min=0,data max=10}] table [x,y index=0] {data-1.txt};
  \end{axis}
\end{tikzpicture}

相关内容