锚点位于彩条的外部边界框上

锚点位于彩条的外部边界框上

我在水平方向上有tikzpicture两个环境:axis

\documentclass[margin=1cm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
        [
            name=plotLeft,
            xtick={0,1},
            xlabel={$x$},
            ytick={0,1},
            ylabel={$y$},
            colorbar,
            view={0}{90},       
        ]
            \addplot3[surf,shader=interp,domain=0:1,y domain=0:1] {x+y};
        \end{axis}
        \begin{axis}
        [
            name=plotRight,
            at={($(plotLeft.outer east)+(25mm,0)$)},
            anchor=outer west,
            xtick={0,1},
            xlabel={$x$},
            ytick={0,1},
            ylabel={$y$},
            colorbar,
            view={0}{90}
        ]
            \addplot3[surf,shader=interp,domain=0:1,y domain=0:1] {2*(x+y)};
        \end{axis}
    \end{tikzpicture}
\end{document}

生成的图片如下所示

对于正确环境的对齐axis,我使用了at={($(plotLeft.outer east)+(25mm,0)$)},anchor=outer west轴选项,但我实际上想要做的是将正确的图形相对于outer east左图形的颜色条的锚点放置(如果定义了这样的锚点),而不是相对于锚点放置plotLeft.outer east

对于axis环境,所有锚点均在PGFplots手册修订版 1.12(2015/01/31)的第 4.19.1 节中定义,但我似乎找不到颜色条的此类定义。

我该如何解决这个问题?

答案1

颜色条本身就是一个轴,因此您可以使用相同的锚点,只需能够引用此类轴即可。手册第 4.9.12 节“颜色条”(我有 1.12.1 版,我希望这没有改变)中说,可以将前一个显式axis环境的颜色条作为 进行访问current colorbar axis。但是,如果您使用它的outer east锚点,则图不会垂直对齐,因为颜色条没有 x 标记或标签。相反,您可以使用right of south eastleft of south west锚点,如以下代码所示。

\documentclass[margin=1cm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
        [
            name=plotLeft,
            xtick={0,1},
            xlabel={$x$},
            ytick={0,1},
            ylabel={$y$},
            colorbar,
            view={0}{90},       
        ]
            \addplot3[surf,shader=interp,domain=0:1,y domain=0:1] {x+y};
        \end{axis}
        \begin{axis}
        [
            name=plotRight,
            at=(current colorbar axis.right of south east),
            anchor=left of south west,
            xtick={0,1},
            xlabel={$x$},
            ytick={0,1},
            ylabel={$y$},
            colorbar,
            view={0}{90}
        ]
            \addplot3[surf,shader=interp,domain=0:1,y domain=0:1] {2*(x+y)};
        \end{axis}
    \end{tikzpicture}
\end{document}

结果

相关内容