我有这个非常简单的 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
原因正如您所猜测的,是因为您将 的最大值设置为y
,7000000
即 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}