Posición de las barras de error en gráficos de barras en TiKZ

Posición de las barras de error en gráficos de barras en TiKZ

¡Ayuda! Parece que no puedo obtener la posición de las barras de error justo encima de cada barra. Además, por alguna razón, mi leyenda también parece estar fuera de lugar.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}


\colorlet{negro}{black}
\colorlet{gris}{black!70}
\colorlet{rojo}{red!70!black}
\colorlet{rojol}{red}

\begin{document}

\begin{center}
\begin{tikzpicture}
\begin{axis}[xscale = 1.45,
 scaled ticks=false, tick label style={/pgf/number format/fixed},
 xbar, 
 xmin = 1, xmax = 7,
 ymin = -0.1, ymax = 0.25,
 ytick = {-0.10, -0.05, 0.00, 0.05, 0.10, 0.15, 0.20, 0.25},
 ylabel = Efecto en Pr(Voto),
 xticklabels = {Género, Ruralidad, Pareja, Riqueza, Id. Part., Ideología},
 ybar interval=0.5,
 bar width=3pt,
 grid = major,
 legend style={cells={anchor=center, fill}, nodes={inner sep=1,below=-1.1ex}},area legend
 ]
  \draw [orange, very thick] (axis cs:0,0) -- (axis cs:7,0);
  \addplot[color = negro, fill = negro, 
  error bars/.cd,
  y dir=both,
  y explicit,
  error bar style={line width=1.5pt, gris},
  error mark options = {
  rotate = 90, 
  line width=1.5pt, 
  mark size = 3pt, 
  gris}
  ]
    coordinates{(1,-0.011097) +- (0,0.0380683)
                (2,0.0393206) +- (0,0.050079)
                (3,-0.019293) +- (0,0.0389844)
                (4,0.0078975) +- (0,0.0097073)
                (5,0.0234860) +- (0,0.0481639)
                (6,0.0336061) +- (0,0.0462397)
                (7,0)};
  \addplot [color = rojo, fill = rojo,
   error bars/.cd,
  y dir=both,
  y explicit,
  error bar style={line width=1.5pt, rojol},
  error mark options = {
  rotate = 90, 
  line width=1.5pt, 
  mark size = 3pt, 
  rojol}
  ]
    coordinates{(1,-0.025222) +- (0,0.055507)
                (2,0.1337832) +- (0,0.0720284)
                (3,0.0517127) +- (0,0.0574637)
                (4,0.0053732) +- (0,0.0129013)
                (5,0.0741801) +- (0,0.0731692)
                (6,0.0181164) +- (0,0.0709312)
                (7,0)};
 \addlegendentry{2008}
 \addlegendentry{2012}
 \end{axis}
\end{tikzpicture}
\end{center}

\end{document}

Respuesta1

No he encontrado una forma óptima, pero está funcionando en este ejemplo. Esta es una lista de mejoras:

  1. Me cambié xscale = 1.45a width=12cm, height=6cm.
  2. Agregué xshiftcon dimensión adivinada entre las opciones del error bar style(dos veces).
  3. Comenté el inputencpaquete y decodifiqué caracteres diacríticos en cadenas TeX (dos veces), ahora el archivo se puede ejecutar con todos latexlos formatos principales, por ejemplo, mediante lualatex sample.tex.

Adjunto el resultado de mis esfuerzos y una vista previa del archivo PDF.

%! {pdf|lua|xe|}latex sample.tex
\documentclass{standalone}
%\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\colorlet{negro}{black}
\colorlet{gris}{black!70}
\colorlet{rojo}{red!70!black}
\colorlet{rojol}{red}

\begin{document}
\begin{tikzpicture}
\begin{axis}[%xscale = 1.45,
width=12cm, height=6cm,
 scaled ticks=false, tick label style={/pgf/number format/fixed},
 xbar, 
 xmin = 1, xmax = 7,
 ymin = -0.1, ymax = 0.25,
 ytick = {-0.10, -0.05, 0.00, 0.05, 0.10, 0.15, 0.20, 0.25},
 ylabel = Efecto en Pr(Voto),
 xticklabels = {G\'enero, Ruralidad, Pareja, Riqueza, Id. Part., Ideolog\'ia},
 ybar interval=0.5,
 bar width=3pt,
 grid = major,
 legend style={cells={anchor=center, fill}, nodes={inner sep=1, below=-1.1ex}}, area legend
 ]
  \draw [orange, very thick] (axis cs:0,0) -- (axis cs:7,0);
  \addplot[color = negro, fill = negro, 
  error bars/.cd,
  y dir=both,
  y explicit,
  error bar style={line width=1.5pt, gris, xshift=4.5mm},
  error mark options = {
  rotate = 90, 
  line width=1.5pt, 
  mark size = 3pt, 
  gris,
  }
  ]
    coordinates{(1,-0.011097) +- (0,0.0380683)
                (2,0.0393206) +- (0,0.050079)
                (3,-0.019293) +- (0,0.0389844)
                (4,0.0078975) +- (0,0.0097073)
                (5,0.0234860) +- (0,0.0481639)
                (6,0.0336061) +- (0,0.0462397)
                (7,0)};
  \addplot [color = rojo, fill = rojo,
   error bars/.cd,
  y dir=both,
  y explicit,
  error bar style={line width=1.5pt, rojol, xshift=13mm},
  error mark options = {
  rotate = 90, 
  line width=1.5pt, 
  mark size = 3pt, 
  rojol}
  ]
    coordinates{(1,-0.025222) +- (0,0.055507)
                (2,0.1337832) +- (0,0.0720284)
                (3,0.0517127) +- (0,0.0574637)
                (4,0.0053732) +- (0,0.0129013)
                (5,0.0741801) +- (0,0.0731692)
                (6,0.0181164) +- (0,0.0709312)
                (7,0)};
 \addlegendentry{2008}
 \addlegendentry{2012}
 \end{axis}
\end{tikzpicture}
\end{document}

mwe

información relacionada