使用 pgfplots 在第一个间隔中启动 xtick 标签

使用 pgfplots 在第一个间隔中启动 xtick 标签

我正在创建一个具有两个 x 轴的图表,pgfplots其中一个轴表示时间步长,另一个轴表示一个时间步内的迭代。到目前为止,我有以下代码:

\begin{tikzpicture}
    \begin{axis}[xmin=1, xmax=27,
                 ymin=300, ymax=450,
                 xtick={7,12,17,22,27},
                 xticklabels={1,2,...,5},
                 x tick label as interval, % <-----
                 xmajorgrids,
                 axis x line*=top,
                 hide y axis,
                 xlabel={Timestep}
                 ]
    \end{axis}
    %
    \begin{axis}[xmin=1, xmax=27,
                 ymin=300, ymax=450,
                 axis x line*=bottom,
                 xtick={1,2,...,26},
                 xticklabels= {1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5},
                 xlabel={Newton-Iterations},
                 ylabel={GMRes-Iterations},
                 ]
                 \addplot[mark=none, red] table [x index=2,y index=5]
                    {data};
                 \addplot[mark=none, blue] table [x index=2,y index=8]
                    {data};
    \end{axis}
\end{tikzpicture}

得到下图的结果: 在此处输入图片描述

到目前为止一切顺利。对于我使用的顶部轴x tick label as interval,但如您所见,它从第二个间隔开始。我可以移动这些标签,以便它们从第一个间隔开始吗?

答案1

使用 时x tick label as interval,需要有 n+1 个位置xtick才能放置 n xticklabels。需要一个额外的位置,因为我们需要标记每个“间隔”的开始和结束。因此,添加第一个标签的开头 ( 1) 就足够了:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[xmin=1, xmax=27,
                 ymin=300, ymax=450,
                 xtick={1,7,12,17,22,27},
                 xticklabels={1,2,...,5},
                 x tick label as interval, % <-----
                 xmajorgrids,
                 axis x line*=top,
                 hide y axis,
                 xlabel={Timestep}
                 ]
    \end{axis}
    %
    \begin{axis}[xmin=1, xmax=27,
                 ymin=300, ymax=450,
                 axis x line*=bottom,
                 xtick={1,2,...,26},
                 xticklabels= {1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5},
                 xlabel={Newton-Iterations},
                 ylabel={GMRes-Iterations},
                 ]
                 \addplot[mark=none, red] table [x index=2,y index=5]
                    {data};
                 \addplot[mark=none, blue] table [x index=2,y index=8]
                    {data};
    \end{axis}
\end{tikzpicture}
\end{document}

(由于我没有您的数据,因此这会出现错误,但它会根据需要显示轴标签。)

在此处输入图片描述

相关内容