pgfplots 移动轴标签和轴线

pgfplots 移动轴标签和轴线

我希望文档中所有图的 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 页)。

相关内容