pgfplots:如何在双轴图中定位第二个标签?

pgfplots:如何在双轴图中定位第二个标签?

如何将第二个标签定位在第二个轴的上方?

在下面的 MWE 中,只需声明\pgfplotsset{compat=newest}即可解决问题。但是,我想在无法设置兼容边界的文档中本地控制标签位置(将其视为临时解决方法)。有没有办法明确指定标签在第二个轴内的位置?

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ymin=0,
        ymax=1,
        axis y line*=left,
        ylabel={left},
    ]
    \addplot [color=blue, domain=0:1] expression {x} node[midway]{axis 1};
    \end{axis}
    \begin{axis}[
        ymin=0,
        ymax=2,
        axis x line=none,
        axis y line*=right,
        ylabel={\hspace{4cm} should be right},
    ]
    \addplot [color=red, domain=0:1] expression {x} node[midway]{axis 2};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

无需compatpgfplotsset命令中指定,添加ylabel near ticks应该会产生您想要的结果。但是,文档(第 4.9.3 节)提到,pgfplotsset最好使用以使此行为在整个文档范围内保持一致,并避免任何不必要的空间(因为如果在序言之外激活,则使用固定距离)。

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ymin=0,
        ymax=1,
        axis y line*=left,
        ylabel={left},
    ]
    \addplot [color=blue, domain=0:1] expression {x} node[midway]{axis 1};
    \end{axis}
    \begin{axis}[
        ymin=0,
        ymax=2,
        axis x line=none,
        axis y line*=right,
        ylabel near ticks,
        ylabel={should be right},
    ]
    \addplot [color=red, domain=0:1] expression {x} node[midway]{axis 2};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

你应该总是设置compat级别。我不明白为什么“更复杂的文档”不能设置这个级别。如果你想手动控制标签的位置,可以这样做:

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=0,
ymax=1,
axis y line*=left,
ylabel={left},
]
\addplot [color=blue, domain=0:1] expression {x} node[midway]{axis 1};
\end{axis}
\begin{axis}[
ymin=0,
ymax=2,
axis x line=none,
axis y line*=right,
ylabel={should be right},
y label style={at={(1.1,0.5)}}
]
\addplot [color=red, domain=0:1] expression {x} node[midway]{axis 2};
\end{axis}
\end{tikzpicture}
\end{document}

具有两个轴和标签的图表

答案3

如果您只是添加\pgfplotsset{compat=1.18}它看起来就像您想要的那样。

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ymin=0,
        ymax=1,
        axis y line*=left,
        ylabel={left},
    ]
    \addplot [color=blue, domain=0:1] expression {x} node[midway]{axis 1};
    \end{axis}
    \begin{axis}[
        ymin=0,
        ymax=2,
        axis x line=none,
        axis y line*=right,
        ylabel={right},
    ]
    \addplot [color=red, domain=0:1] expression {x} node[midway]{axis 2};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容