Como obter o gráfico de barras pfgplot alinhado com o eixo x?

Como obter o gráfico de barras pfgplot alinhado com o eixo x?

Alguma ideia de por que esses dois aparentemente formatados da mesma forma pfgplotstêm resultados diferentes? Principalmente, eu gostaria que o 0 no eixo y (no gráfico à esquerda) estivesse alinhado com o eixo x, assim como o gráfico à direita. Como posso consertar isso?

    \usepackage{graphicx}
    \usepackage{pgfplots}
    \usepackage{tikz}

    \begin{figure}[htb]
        \centering
        \makebox[0pt][c]{%
        \hspace{-2cm}
        \begin{minipage}[b]{0.5\linewidth}
        \centering
          \begin{tikzpicture}
                \begin{axis}[
                    ybar,
                    enlargelimits=0.15,
                    legend style={at={(0.5,-0.15)},
                      anchor=north,legend columns=-1},
                    ylabel={Collision score},
                    symbolic x coords={Large, 1, 2, 3, 33, 37},
                    xtick=data,
                    nodes near coords,
                    nodes near coords align={vertical},
                    point meta=y *10^-2
                ]
                \addplot 
                    coordinates {(Large,6.069e3) (1,1.311e3) (2,.146e3)
                         (3,.066e3) (33,.060e3) (37,.067e3)};
                \legend{Base}
                \end{axis}
            \end{tikzpicture}
        \label{sva}
        \end{minipage}%
        \hspace{1.5cm}
        \begin{minipage}[b]{0.5\linewidth}
        \centering
         \begin{tikzpicture}
                \begin{axis}[
                    ybar,
                    enlargelimits=0.15,
                    legend style={at={(0.5,-0.15)},
                      anchor=north,legend columns=-1},
                    ylabel={Elapsed Time},
                    symbolic x coords={Large, 1, 2, 3, 33, 37},
                    xtick=data,
                    nodes near coords,
                    nodes near coords align={vertical},
                ]
                \addplot 
                    coordinates {(Large,0.115 ) (1,0.124) (2,0.104 )
                         (3,0.108) (33,0.099) (37,0.103)};
                \legend{Base}
                \end{axis}
            \end{tikzpicture}
        \label{svb}
        \end{minipage}%
        }%
    \end{figure}

insira a descrição da imagem aqui

Responder1

Isso ocorre por causa de enlargelimits, mas no eixo direito y não começa em 0. Portanto, com uma ligeira modificação você obterá o resultado desejado. Para isso veja os comentários no código.

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \pgfplotsset{
        my axis style/.style={
            ybar,
            enlarge x limits=0.15,      % <-- changed
            legend style={
                at={(0.5,-0.15)},
                anchor=north,
                legend columns=-1,
            },
            symbolic x coords={Large, 1, 2, 3, 33, 37},
            xtick=data,
            nodes near coords,
            nodes near coords align={vertical},
        },
    }
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        my axis style,
        ymin=0,                         % <-- added
        ylabel={Collision score},
        point meta=y *10^-2
    ]
    \addplot
        coordinates {(Large,6.069e3) (1,1.311e3) (2,.146e3)
             (3,.066e3) (33,.060e3) (37,.067e3)};
    \legend{Base}
    \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{axis}[
        my axis style,
        ylabel={Elapsed Time},
    ]
        \addplot coordinates {
            (Large,0.115 ) (1,0.124) (2,0.104)
             (3,0.108) (33,0.099) (37,0.103)};
        \legend{Base}
    \end{axis}
\end{tikzpicture}
\end{document}

imagem mostrando o resultado do código acima

informação relacionada