具有无序坐标输入的堆叠 ybar

具有无序坐标输入的堆叠 ybar

我正在stacked ybar根据一些数据创建一个图,这导致输入坐标未排序。这导致一些条形图之间出现间隙。这是一个错误吗?图不应该stacked ybar知道所有的高度吗?如果没有,有没有简单的方法可以解决这个问题?我肯定会在我的程序中解决这个问题(我事先做了一些数据处理),但我觉得应该有一个简单的解决方案。

以下是一个示例文档:

\documentclass{scrartcl}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}
        [
            ybar stacked,
            ymin = 0,
            enlarge x limits
        ]
        \addplot coordinates {
            (1, 1)
            (2, 2)
            (3, 3)
        };
        \addplot coordinates {
            (1, 1)
            (3, 3) % 'wrong' order
            (2, 2)
        };
    \end{axis}
\end{tikzpicture}

\end{document}

得出的结果为:错误结果

我想要的是以下内容,它是通过更改第二个\addplot命令中“错误”排序的行生成的。 想要的结果

答案1

这不是一个真正的答案,而是一个长评论......


在里面PGFPlots 手册 (v1.15) 第 4.5.9 节,第 94 页在密钥描述的末尾,stack plots你可以找到以下文字:

堆栈图的当前实现是不是插入缺失的坐标。这意味着如果图具有不同的网格,则堆叠将失败。

结合您提供的稍作修改的示例(您可以在下面找到),应该可以很容易地解释当前实现的工作方式。因此,我认为您除了先对条目进行排序然后再声明之外别无选择coordinates

但是您提到了一些关于“您的程序”的内容,所以我认为您在外部创建数据。然后我会考虑将数据写入外部文件并通过 使用该数据\addplot table。(我在这里不提供示例,因为您可以在此网站上找到很多示例。)

% used PGFPlots v1.15
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    % used to center the `nodes near coords' in stacked plots
    \pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ybar stacked,
        ymin=0,
        enlarge x limits,
        nodes near coords,
        point meta=\coordindex,
    ]
        \addplot coordinates {
            (1, 1)
            (5, 2) % 'wrong' order
            (3, 3)
        };
        \addplot coordinates {
            (1, 1)
            (4, 3) % 'wrong' order
            (2, 2)
        };
    \end{axis}
\end{tikzpicture}
\end{document}

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

相关内容