条形图吞噬一组条目

条形图吞噬一组条目

如果按照以下示例sharelatex.com简单的条形图。

\begin{tikzpicture}
\begin{axis}[
    x tick label style={
        /pgf/number format/1000 sep=},
    ylabel=Year,
    enlargelimits=0.05,
    legend style={at={(0.5,-0.1)},
    anchor=north,legend columns=-1},
    ybar interval=0.7,
]
\addplot 
    coordinates {(2012,408184) (2011,408348)
         (2010,414870) (2009,412156) (2008,415 838)}; % 2008 coordinate given, but does not show
\addplot 
    coordinates {(2012,388950) (2011,393007) 
        (2010,398449) (2009,395972) (2008,398866)}; % same here
\legend{Men,Women}
\end{axis}
\end{tikzpicture}

这个图绘制得相当好(在网站上也可以看到)。在复制并根据我的需要进行调整后,我意识到它吞掉了最后一个坐标。

我觉得这很奇怪。这是故意的吗?如果不是,如何正确修复此问题(即不添加虚拟坐标)?

答案1

手册中是这样解释的:

使用间隔时,存在一个概念上的差异:间隔由两个坐标定义。由于 ybar 对于每个间隔都有一个值,因此第 i 个条形由以下各项定义:
1. 第 i 个坐标的 y 值,
2. 第 i 个坐标的 x 值作为左间隔边界,
3. 第 (i + 1) 个坐标的 x 值作为右间隔边界。
因此,多了一个坐标:最后一个坐标仅用于确定间隔宽度;其 y 值不影响条形外观。

如果您不喜欢添加虚拟坐标,则必须删除该ybar interval选项。您可以调整其他一些选项:

  • ybar=<distance between two bars at the same coordinate>
  • bar width=<width of a bar>,可以是维度或轴单位
  • 增加enlarge x limits

\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    x tick label style={
        /pgf/number format/1000 sep=},
    ylabel=Year,
    enlarge y limits=0.05,
    enlarge x limits=0.15,% increase limits for x
    legend style={at={(0.5,-0.1)},
    anchor=north,legend columns=-1},
    ybar=3pt, % distance between two bars at the same coordinate
    bar width=0.3 % defines the width of a bar in axis units or as a dimension
]
\addplot
    coordinates {(2012,408184) (2011,408348)
         (2010,414870) (2009,412156) (2008,415 838)};
\addplot 
    coordinates {(2012,388950) (2011,393007) 
        (2010,398449) (2009,395972) (2008,398866)};
\legend{Men,Women}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容