我有一张图表,希望在底部有一个居中的 x 标签。想法是使用 overpic,然后使用 \put(50,1){some x-label} 在底部插入一些文本。
问题是 \put 将文本的 START 相对于图像放置。有没有办法将文本的 CENTER 相对于图像放置?
代码:
\begin{center}
\begin{overpic}[width=0.8\textwidth]{graph}
\put(50,1){some x-label}
\end{overpic}
\end{center}
我还希望 y 标签逆时针旋转 90 度,水平居中,位于图表左侧。有办法吗?
答案1
\put(50,1){\makebox(0,0){some x-label}}
将把文本的(水平和垂直)中心放在指定的位置。
要旋转文本,您可以使用\rotatebox
\put(50,1){\makebox(0,0){\rotatebox{90}{some x-label}}}
答案2
使用瑞士军刀tikz
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[inner sep = 0pt] (a) {\includegraphics[width=6cm]{example-image-a}};
\node[anchor=south,inner sep=1pt] at (a.south) {This is $x-$label};
\node[anchor=south,inner sep=1pt,rotate=-90] at (a.west) {This is $y-$label};
\end{tikzpicture}
\end{document}
答案3
这使用了stackengine
包。在这里,x 轴标签水平居中,标签底部的偏移量从图表底部指定。同样,y 轴标签垂直居中,标签左侧的偏移量从图表左侧指定。
已编辑,以表明图像方面没有问题;标签中的数学也没有问题。
\documentclass{article}
\usepackage{stackengine,graphicx}
\begin{document}
\stackinset{l}{2pt}{c}{}{\rotatebox{-90}{This is my $y$-axis label}}{%
\stackinset{c}{}{b}{2pt}{This is my $x$-axis label}{%
\includegraphics[width=3in]{example-image-A}%
}}
\end{document}
如果您的图表没有空白区域可以应用标签,\stackinset
可以使用负偏移量将标签应用到图像之外。但是,在这种情况下,请将 y 轴标签设为最内层的嵌套插图,因为延伸到基本内容上方或下方的插图(x 标签也是如此)会有效改变后续插图的图像高度。相反,延伸到图像的左侧或右侧不会改变图像的有效宽度。
\documentclass{article}
\usepackage{stackengine,graphicx}
\begin{document}
\stackinset{c}{}{b}{-12pt}{This is my x-axis label}{%
\stackinset{l}{-12pt}{c}{}{\rotatebox{-90}{This is my y-axis label}}{%
\includegraphics[width=3in,height=3in]{example-image-A}%
}}
\end{document}