使用 pgfplots 样式绘制误差线

使用 pgfplots 样式绘制误差线

以下 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}

相关内容