我希望文档中所有图的 y 轴标签都位于 y 轴线上方。通常情况下是这样,above origin
但有时我必须将线移开。我正在寻找一种将轴线和轴标签绑定在一起的方法,以便它们像一个整体一样移动。
试图
pgfplots 手册(第 4.9.10 章“移动轴线”)指出,axis y line shift
允许移动轴线及其所有描述,但似乎没有。轴线移动,但标签(我认为是轴线的描述)保持不变。即使ylabel shift
标签也不移动。
快速解决
作为替代方案,我目前将轴线移到最左侧并对齐标签north west
。这不是我真正想要的,但我可以忍受。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.17,
every axis/.style={
axis lines={center}, %%% axes at origin by default
every axis x label/.style={
at=(current axis.right of origin),
right,
},
every axis y label/.style={
at=(current axis.above origin), %%% y axis label above origin by default
above,
},
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ylabel={==y==},
axis y line shift={0.5}, %%% attempt: moves axis line (but not the label)
ylabel shift={0.5}, %%% attempt: has no effect
% axis y line={left}, %%% quick fix
% ylabel style={at=(current axis.north west)}, %%% quick fix
]
\addplot table {
-1 -1
1 1
};
\end{axis}
\end{tikzpicture}
\end{document}
下图显示了上述代码的输出。y 标签没有随 y 轴线移动。虽然它应该随线移动,但它位于原点上方。
下图显示了快速修复的结果。标签“==y==”位于轴线上方。
答案1
您可以使用
every axis y label/.style={
at=(yticklabel* cs:1),
%...
定位轴标签。yticklabel* cs
坐标描述见第 4.9.1 节轴描述的位置手册pgfplots
。 (版本 1.18.1 手册的第 244-45 页)。