pgfplots:将“靠近坐标的节点”定位在栏的底部

pgfplots:将“靠近坐标的节点”定位在栏的底部

我想将其定位nodes near coords在相应栏的底部,就在 X 轴旁边。

以下是我现在得到的信息:

\documentclass{report}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            ybar,
            ymin=0, yticklabel style={/pgf/number format/fixed},
            symbolic x coords={0,1,2,3}, enlarge x limits=0.15,
            every node near coord/.append style={font=\tiny, yshift=-30}]        
        \addplot+ [nodes near coords, point meta=explicit symbolic]
            table[x index=0, y index=1, meta index=3] {
                0   0.1872  0.0040  0
                1   0.0358  0.0017  22
                2   0.0358  0.0017  23
                3   0.0358  0.0017  24
            };
    \end{axis}
\end{tikzpicture}
\end{document}

我认为如果我能写出类似yshift=\getcurrentvalueofy(或yshift=\getbarheight)的内容,问题就会解决。我试过了\pgfkeysvalueof{/data point/y},但我必须承认我并不真正明白我在做什么,所以没有成功。

答案1

y您可以使用键visualization depends on=y \as \rawy(其中是您选择的宏名称)使坐标值可用\rawy。然后您可以使用移动节点shift={(axis direction cs:0,-\rawy)}。请注意,您必须使用,axis direction cs因为在放置节点时坐标系会移动和缩放。

\documentclass{report}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            ybar,
            ymin=0, yticklabel style={/pgf/number format/fixed},
            visualization depends on=y \as \rawy,
            symbolic x coords={0,1,2,3}, enlarge x limits=0.15,
            every node near coord/.append style={
                    font=\tiny,
                    shift={(axis direction cs:0,-\rawy)}
                }
        ]        
        \addplot+ [nodes near coords, point meta=explicit symbolic]
            table[x index=0, y index=1, meta index=3] {
                0   0.1872  0.0040  0
                1   0.0358  0.0017  22
                2   0.0358  0.0017  23
                3   0.0358  0.0017  24
            };
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容