以下 MWE 显示两个带有误差线的条形图。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
x y1 y1_err y2 y2_err
0 1 .1 2 .2
1 2 .2 3 .3
2 3 .3 4 .4
}\loadedtable
\begin{tikzpicture}
\begin{axis}[ybar,bar width=14pt ]
\addplot[
style={red, fill=red},
error bars/.cd,
error bar style={
thick,
},
y dir=both,
y explicit,
] table[
x=x,
y=y1,
y error=y1_err,
] {\loadedtable};
\addplot[
style={blue, fill=blue},
error bars/.cd,
error bar style={
thick,
},
y dir=both,
y explicit,
]
table[x=x, y=y2, y error=y2_err] {\loadedtable};
\end{axis}
\end{tikzpicture}
\end{document}
缺点之一是我必须重复大量相同的错误栏样式代码,而我理想情况下希望能够执行以下操作:
\pgfplotsset{errorBars/.style={
error bars/.cd,
error bar style={
thick,
},
y dir=both,
y explicit,
}
}
不幸的是,\addplot[errorBars/.style,style={red, fill=red}]
实际上并没有按预期显示误差线。
我如何设置样式全部某个 tikzpicture 中的误差线?
答案1
和
\pgfplotsset{
errorBars/.style={
error bars/error bar style={
thick,
},
error bars/y dir=both,
error bars/y explicit,
}
}
您可以使用\addplot[errorBars,style={red, fill=red}]
或\addplot[style={red, fill=red},errorBars]
。如果 axis 环境内的所有图都应具有这种样式的误差线,则可以将其用作环境every axis plot/.append style={errorBars}
的选项axis
。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}% loads also tikz
\pgfplotsset{compat=1.13}
\pgfplotsset{
errorBars/.style={
error bars/error bar style={
thick,
},
error bars/y dir=both,
error bars/y explicit,
}
}
\begin{document}
\pgfplotstableread{
x y1 y1_err y2 y2_err
0 1 .1 2 .2
1 2 .2 3 .3
2 3 .3 4 .4
}\loadedtable
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=14pt,
every axis plot/.append style={errorBars}
]
\addplot[
%errorBars,
style={red, fill=red}
] table[
x=x,
y=y1,
y error=y1_err,
] {\loadedtable};
\addplot[
style={blue, fill=blue},
%errorBars
]
table[x=x, y=y2, y error=y2_err] {\loadedtable};
\end{axis}
\end{tikzpicture}
\end{document}