pgfplots:沿符号 X 轴水平对齐多个条形和标记

pgfplots:沿符号 X 轴水平对齐多个条形和标记

我想将某些测量值的平均值绘制为带有误差线的条形图,并将其最大值绘制为条形图上方的标记。

我现在为此使用了两个单独的图。问题在于将标记与条对齐:现在所有标记都位于相同的符号 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,
            legend style={at={(0.5,-0.2)}, anchor=north, legend columns=-1},
        ]            
        \addplot+ [nodes near coords, point meta=explicit symbolic, error bars/.cd, y dir=both, y explicit]
            table[x index=0, y index=1, y error index=2, meta index=3] {
0   0.1 0.0040  0
1   0.0358  0.0017  224
2   0.0358  0.0017  224
3   0.0358  0.0017  224
};
        \addplot+ [nodes near coords, point meta=explicit symbolic, error bars/.cd, y dir=both, y explicit]
            table[x index=0, y index=1, y error index=2, meta index=3] {
0   0.1 0.0041  0
1   0.0322  0.0016  224
2   0.0321  0.0014  252
3   0.0321  0.0014  266
};
        \addplot+ [only marks] table[x index=0,y index=1] {
0   0.2
1   0.06
2   0.06
3   0.06
};
        \addplot+ [only marks] table[x index=0,y index=1] {
0   0.15
1   0.04
2   0.04
3   0.04
};
        \legend{P1,P2}
    \end{axis}
\end{tikzpicture}
\end{document}

答案1

mark options={xshift=\pgfkeysvalueof{/pgf/bar shift}}您可以通过添加选项来转移点\addplot [...]

\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,
            legend style={at={(0.5,-0.2)}, anchor=north, legend columns=-1},
        ]            
        \addplot+ [nodes near coords, point meta=explicit symbolic, error bars/.cd, y dir=both, y explicit]
            table[x index=0, y index=1, y error index=2, meta index=3] {
0   0.1 0.0040  0
1   0.0358  0.0017  224
2   0.0358  0.0017  224
3   0.0358  0.0017  224
};
        \addplot+ [nodes near coords, point meta=explicit symbolic, error bars/.cd, y dir=both, y explicit]
            table[x index=0, y index=1, y error index=2, meta index=3] {
0   0.1 0.0041  0
1   0.0322  0.0016  224
2   0.0321  0.0014  252
3   0.0321  0.0014  266
};
        \addplot+ [only marks, mark options={xshift=\pgfkeysvalueof{/pgf/bar shift}}] table[x index=0,y index=1] {
0   0.2
1   0.06
2   0.06
3   0.06
};
        \addplot+ [only marks, mark options={xshift=\pgfkeysvalueof{/pgf/bar shift}}] table[x index=0,y index=1] {
0   0.15
1   0.04
2   0.04
3   0.04
};
        \legend{P1,P2}
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容