如何使 pfgplot 条形图与 x 轴齐平?

如何使 pfgplot 条形图与 x 轴齐平?

知道为什么这两个看似格式相同的pfgplots输出却不同吗?我主要希望 y 轴上的 0(在左侧的图中)与 x 轴齐平,就像右侧的图一样。我该如何解决这个问题?

    \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}

在此处输入图片描述

答案1

这是因为enlargelimits,但右轴上的 y 不是从 0 开始的。因此,只需稍加修改,您就会得到所需的结果。有关详细信息,请参阅代码中的注释。

% 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}

该图显示了上述代码的结果

相关内容