我在查找如何垂直对齐使用 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
您可以将选项添加baseline
到tikzpicture
环境中
/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}