Pgfplots 不打印一个条形图

Pgfplots 不打印一个条形图

我有这个非常简单的 pgfplot:

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
        \begin{tikzpicture}
            \pgfplotstableread[row sep=\\,col sep=&]{
                     name &    value \\
                        a &  1412629 \\
                        b &  1382400 \\
                        c &  1650981 \\
                        d &  6078327 \\
                        e & 41930786 \\
            }\datapoints
            \begin{axis}[
                ybar,
                symbolic x coords={a,b,c,d,e},
                xtick=data,
                xticklabels={A,B,C,D,E},
                ymin=0, ymax=7000000
            ]
                \addplot table[x=name, y=value]{\datapoints};
            \end{axis}
        \end{tikzpicture}
\end{document}

由于某种原因,第五个条形e根本不存在。可能是因为它超出了范围,但我希望它被切断,而不是根本不存在。如果我添加另一个数据点f & 0(以及符号坐标和标签),所有六个条形都会存在e并按预期被切断。

为什么e当我添加另一个虚拟数据点时它没有被切断?

答案1

原因正如您所猜测的,是因为您将 的最大值设置为y7000000即 700 万。但您的e值是41930786,所以至少是 4100 万。所以是的,它超出了范围。

如果您希望保留当前配置并且仍然必须e出现,即使它被切断,那么您也可以限制域。

输出

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{compat=1.13}

\begin{document}
        \begin{tikzpicture}
            \pgfplotstableread[row sep=\\,col sep=&]{
                     name &    value \\
                        a &  1412629 \\
                        b &  1382400 \\
                        c &  1650981 \\
                        d &  6078327 \\
                        e & 41930786 \\
            }\datapoints
            \begin{axis}[
                ybar,
                symbolic x coords={a,b,c,d,e},
                xtick=data,
                xticklabels={A,B,C,D,E},
                ymin=0, ymax=7000000,
                restrict y to domain*=0:7000000
            ]
                \addplot table[x=name, y=value]{\datapoints};
            \end{axis}
        \end{tikzpicture}
\end{document}

相关内容