我想将某些测量值的平均值绘制为带有误差线的条形图,并将其最大值绘制为条形图上方的标记。
我现在为此使用了两个单独的图。问题在于将标记与条对齐:现在所有标记都位于相同的符号 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}