2

Following example found here, if one try to add error bars, they end up being out of alignment. Any suggestion how to fix it? Workarounds? enter image description here

\documentclass{article}      
\usepackage{pgfplots}   
\pgfplotsset{width=10cm,compat=newest}
\usepgfplotslibrary{units}
\usetikzlibrary{spy,backgrounds}
\usepackage{pgfplotstable}
\usepackage{siunitx}
\pgfplotstableread{
0.0    1.0
0.0   -0.5
}\datatable
\begin{document}

\begin{tikzpicture}[every pin/.style={fill=white}]
\begin{axis}[
  xlabel={Energy},
  ylabel={Intensity},
  x unit={eV}
]
\addplot +[mark=none] table [x index=0, y index=1] {\datatable};
\addplot +[mark=none] {0.1*x^2};

\coordinate (pt) at (axis cs:0,0);
\end{axis}

\node[pin=70:{%
    \begin{tikzpicture}[baseline,trim axis left,trim axis right]
    \begin{axis}[
        tiny,
      xlabel={Energy},
      ylabel={Intensity},
      x unit={eV},
      xmin=-1,xmax=1,
      ymin=-0.2,ymax=0.2,
      enlargelimits,
    ]
    \addplot +[mark=none] table [x index=0, y index=1] {\datatable};
    \addplot +[mark=none,error bars/y dir=both,
    error bars/y fixed=0.1] {0.1*x^2};
    \end{axis}
    \end{tikzpicture}%
}] at (pt) {};
\end{tikzpicture}    
\end{document}
3

You could save the zoomed-in plot in a box:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.13}
\usepgfplotslibrary{units}
\pgfplotstableread{
0.0    1.0
0.0   -0.5
}\datatable

\newbox\mybox

\begin{document}
\begin{tikzpicture}[every pin/.style={fill=white,pin distance=4em}]
\begin{axis}[
  xlabel={Energy},
  ylabel={Intensity},
  x unit={eV}
]
\addplot +[mark=none] table [x index=0, y index=1] {\datatable};
\addplot +[mark=none] {0.1*x^2};

\coordinate (pt) at (0,0);
\end{axis}

\sbox\mybox{%
  \pgfinterruptpicture
    \begin{tikzpicture}[trim axis left,trim axis right]
    \begin{axis}[
        tiny,
      xlabel={Energy},
      ylabel={Intensity},
      x unit={eV},
      xmin=-1,xmax=1,
      ymin=-0.2,ymax=0.2,
      enlargelimits,
    ]
    \addplot +[mark=none] table [x index=0, y index=1] {\datatable};
    \addplot +[mark=none,error bars/y dir=both,
    error bars/y fixed=0.1] {0.1*x^2};
    \end{axis}
    \end{tikzpicture}%
  \endpgfinterruptpicture
}

\node[pin=70:{\usebox\mybox}] at (pt) {};
\end{tikzpicture}
\end{document}

Result:

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.