在 Pgfplots 中的刻度标签和轴之间插入空格

在 Pgfplots 中的刻度标签和轴之间插入空格

我想在 Pgfplots 图中的 x 刻度标签和 x 轴之间添加一些垂直空间。这可能吗?

背景:我使用 subfig 包将两个子图水平排列在一起。两个子图都包含一个 Pgfplot。左侧图使用对数 x 轴,因此刻度采用指数数字格式。右侧图使用线性刻度 x 轴,因此刻度为 0、100、600……因此,左侧图需要稍微多一点的垂直空间,因此与右侧图不垂直对齐。我的目标是通过添加一些\vphantom{}或类似的东西使两个图垂直对齐。以下是产生问题的 MWE:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usepackage{subfig}
\begin{document}
\begin{figure}[h]
    \subfloat[Logarithmic horizontal axis]{
        \begin{tikzpicture}
        \begin{axis}[xmode=log, width=5cm, height=5cm]
        \addplot
        table[row sep=crcr]{%
        1     1\\
        1e6   2\\
        };
        \end{axis}
        \end{tikzpicture}%
    }%
    \subfloat[Linear horizontal axis]{
        \begin{tikzpicture}
        \begin{axis}[ytick pos=right, width=5cm, height=5cm]
        \addplot
        table[row sep=crcr]{%
        1     1\\
        10   2\\
        };
        \end{axis}
        \end{tikzpicture}%
    }%
\end{figure}
\end{document}

这是 MWE 输出的屏幕截图,显示了垂直偏移: MWE 截图

答案1

一种解决方案是指定xticklabel style以便用 来移动它yshift=-2pt,即:

...
\subfloat[Linear horizontal axis]{
    \begin{tikzpicture}
    \begin{axis}[
ytick pos=right, width=5cm, height=5cm,
xticklabel style={yshift=-2pt},% <--- add in second subfigure
                ]
    \addplot
    table[row sep=crcr]{%
    1    1\\
    10   2\\
    };
    \end{axis}
    \end{tikzpicture}%
}%
...

在此处输入图片描述

答案2

正如@LaRiFaRi所建议的,可以使用Pgfplots键以编程方式定义x刻度标签xticklabel。 因此,将以下选项添加到第二个轴即可解决问题:

xticklabel={\axisdefaultticklabel\vphantom{$10^6$}}

我使用了预定义命令\axisdefaultticklabel,该命令仅打印通常的刻度标签,并添加了与左侧对数轴刻度标签高度相对应的额外空间。以下是此解决方案的完整 MWE

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usepackage{subfig}
\begin{document}
\begin{figure}[h]
    \subfloat[Logarithmic horizontal axis]{
        \begin{tikzpicture}
        \begin{axis}[xmode=log, width=5cm, height=5cm]
        \addplot
        table[row sep=crcr]{%
        1     1\\
        1e6   2\\
        };
        \end{axis}
        \end{tikzpicture}%
    }%
    \subfloat[Linear horizontal axis]{
        \begin{tikzpicture}
        \begin{axis}[
        ytick pos=right, width=5cm, height=5cm, 
        xticklabel={\axisdefaultticklabel\vphantom{$10^6$}}
        ]
        \addplot
        table[row sep=crcr]{%
        1     1\\
        10   2\\
        };
        \end{axis}
        \end{tikzpicture}%
    }%
\end{figure}
\end{document}

这是结果的截图 MWE 输出的屏幕截图

相关内容