如何将第二个标签定位在第二个轴的上方?
在下面的 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
无需compat
在pgfplotsset
命令中指定,添加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}