内联 pgfplots 的垂直对齐

内联 pgfplots 的垂直对齐

我在查找如何垂直对齐使用 pgfplots 创建的内联图时遇到了问题。目前,图表的底部与文本的基线对齐。我更希望图表的顶部与文本的顶部对齐。

我是这方面的新手,我甚至不确定自己在寻找什么来弄清楚如何改变它。我尝试搜索我能想到的“内联垂直对齐 pgfplot”的所有排列,而我所能找到的所有内容都与将一个图形与另一个图形对齐有关,而不是与周围的文本对齐。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{cartesian/.append style={axis x line=middle, axis y line=middle, xlabel={$x$}, ylabel={$y$}, axis equal}}
\begin{document}
\begin{enumerate}
    \setcounter{enumi}{16}
    \item
        \begin{tikzpicture}
            \begin{axis}[cartesian, xmin=-3, xmax=3, ymin=-3, ymax=3, xtick={-2,-1,...,2}, ytick={-2,-1,...,2}]
                \addplot [black, mark=*] coordinates {(0,0) (2,1)};
            \end{axis}
        \end{tikzpicture}
\end{enumerate}
\end{document}

它输出

笛卡尔图与周围文本的基线垂直对齐

如果有人能为我提供一些关于如何解决对齐问题的指导,那就太好了。我觉得这真的很基础,但我甚至不知道该搜索什么。

答案1

正如 caverac 已经提到的那样他的回答实现目标的关键是baseline要添加到tikzpicture环境中的选项。然后剩下的部分就取决于个人喜好了。

有关详细信息,请查看代码中的注释。

% used PGFPlots v1.16
\documentclass[border=5pt,varwidth]{standalone}
\usepackage{pgfplots}
    \pgfplotsset{
        cartesian/.append style={
            axis lines=middle,
            xlabel={$x$},
            ylabel={$y$},
            axis equal,
        },
    }
\begin{document}
\begin{enumerate}
    \setcounter{enumi}{16}
    \item \dots
        \begin{tikzpicture}[
            % add `baseline' option to shift `tikzpicture' to the baseline of
            % the embedding text ...
            baseline,
        ]
            \begin{axis}[
                % ... then you can change the anchor of the `axis' environment
                % from the default `south west' to `north west' which aligns
                % the top of the plot with the baseline of the embedding text. ...
                anchor=north west,
                % ... Then it is left to shift the `tikzpciture'/`axis'
                % environment to the top of the text.
                yshift=1.5ex,
                %
                cartesian,
                % (don't use these ...
%                xtick={-2,-1,...,2},
%                ytick={-2,-1,...,2},
                % ... but that ...
                xtick distance=1,
                ytick distance=1,
                % and change the limits of the axis a bit to avoid the
                % 3's to be printed)
                xmin=-2.99,
                xmax=2.99,
                ymin=-2.99,
                ymax=2.99,
            ]
                \addplot [black, mark=*] coordinates {(0,0) (2,1)};

                % for debugging purposes only
                \draw [help lines] (rel axis cs:0,1) -- (rel axis cs:0.5,1);
            \end{axis}
        \end{tikzpicture}
\end{enumerate}
\end{document}

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

答案2

您可以将选项添加baselinetikzpicture环境中

/tikz/baseline=<dimension or coordinate or default>

默认值为0pt。在下面的例子中,我使用边界框对齐基线,并添加了额外的偏移以进行微调,你可以删除该部分

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{cartesian/.append style={axis x line=middle, axis y line=middle, xlabel={$x$}, ylabel={$y$}, axis equal}}
\begin{document}
\begin{enumerate}
  \setcounter{enumi}{16}
\item
  \begin{tikzpicture}[baseline={([yshift=-2pt]current bounding box.north)}]
    \begin{axis}[cartesian, xmin=-3, xmax=3, ymin=-3, ymax=3, xtick={-2,-1,...,2}, ytick={-2,-1,...,2}]
      \addplot [black, mark=*] coordinates {(0,0) (2,1)};
    \end{axis}
  \end{tikzpicture}
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容