条形图异常行为

条形图异常行为

我的代码是:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[title  = some title,
    xbar,
    y axis line style = { opacity = 0 },
    axis x line       = none,
    tickwidth         = 0pt,
    enlarge y limits  = 0.2,
    enlarge x limits  = 0.02,
    symbolic y coords = {Kesklinn, Mustamae, Kristiine, Nomme, Haabersti, Pohja-Tallinn, Lasnamae},
    nodes near coords,
  ]
  \addplot coordinates { (0.034,Kesklinn)         (-0.011,Mustamae)
                         (-0.01,Kristiine)  (0.025,Nomme) (0.018,Haabersti) (0.008,Pohja-Tallinn) (0.117,Lasnamae)};


  \end{axis}
\end{tikzpicture}
\end{document}

结果是: 在此处输入图片描述

我想要的是强制将每个条形的名称显示在适当的位置(有些根本不显示),如果条形为负数,我希望此条形的名称显示在右侧而不是左侧。此外,我希望将数字显示为百分比,并且不希望它们四舍五入(如 pgfplots 所做的那样)。

答案1

您的问题表明了一些问题:

  • 重叠:Percusse 已经告诉您如何避免 y 刻度上的图重叠,尽管即使仅指定enlarge x limits = 0.6,而不指定 y 限制,也可以获得类似的结果。 甚至根本没有限制。 您可以选择适合您的方法。 在这种情况下,我选择了无限制。

  • 不出现勾号:某些 y 刻度没有出现的原因是您没有ytick=data,在符号坐标定义前添加选项。

  • 节点定位(待修复):对于右侧的节点,您可以添加nodes near coords align={right},anchor=west。这里的问题是,负值将与条形重叠,因为负值将附加到坐标的右侧,因此最终会覆盖条形本身。我认为除了手动移动所有节点之外,没有其他方法可以改变这种情况,因为通常人们希望他们的节点在标准位置的坐标附近。

    一个可能的替代方案是应用一个条件,以便只移动负值。但我还不确定如何做到这一点。

  • 百分比:附近的坐标节点已使用以下命令转换为百分比:

    nodes near coords={$\pgfmathprintnumber{\pgfplotspointmeta}\%$},
    point meta=100*x,
    

输出

在此处输入图片描述

代码

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

\pgfplotsset{compat=1.13}

\begin{document}
\begin{tikzpicture}
\begin{axis}[title  = some title,
    xbar,
    y axis line style = { opacity = 0 },
    axis x line       = none,
    tickwidth         = 0pt,
    ytick=data,
    symbolic y coords={Kesklinn, Mustamae, Kristiine, Nomme, Haabersti, Pohja-Tallinn, Lasnamae},
    y tick label style={anchor=east},
    nodes near coords={$\pgfmathprintnumber{\pgfplotspointmeta}\%$},
    point meta=100*x,
    nodes near coords align={anchor=west},
    every node near coord/.append style={%
        xshift=5mm
    }
    ]

\addplot coordinates {
    (0.034,Kesklinn)
    (-0.011,Mustamae)
    (-0.01,Kristiine)
    (0.025,Nomme)
    (0.018,Haabersti)
    (0.008,Pohja-Tallinn) 
    (0.117,Lasnamae)
    };

\end{axis}
\end{tikzpicture}
\end{document}

相关内容