PGFPlots - 如何制作具有非框状轴的多线轴标签

PGFPlots - 如何制作具有非框状轴的多线轴标签

这个答案描述了如何为带框轴创建多行轴标签。但是,当我尝试对非带框轴执行此操作时,它失败了。例如,

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
  title=MWE,
  xlabel style={align=center}, xlabel={some\\x\\label},
  ylabel style={align=center}, ylabel={some\\y\\label},
  axis x line=middle,
  % axis y line=middle,
  xtick=\empty,
  ytick=\empty,
]
  \addplot[
    samples=100,
    domain=-2:2,
  ] {x};
\end{axis}
\end{tikzpicture}
\end{document}

生产 在此处输入图片描述

我怎样才能让 x 轴标签也跨越 3 条线?

我知道上面链接的问题也讨论了使用text width作为一种可能的解决方案。但是,xlabel style=...在我的示例中,用 替换xlabel style={align=center, text width=2cm}不会改变结果。

答案1

您的代码的“问题”在于您更改axis x line 你已经改变了xlabel style因此你的更改将被覆盖。因此,只需更改第一个axis x line,您就会收到预期的结果。

% used PGFPlots v1.17
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    title=MWE,
    axis x line=middle,     % <-- moved up
    xlabel style={align=center}, xlabel={some\\x\\label},
    ylabel style={align=center}, ylabel={some\\y\\label},
    xtick=\empty,
    ytick=\empty,
]
  \addplot[
    samples=100,
    domain=-2:2,
  ] {x};
\end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

答案2

xlabel打印为节点。因此,您可以设置特定的文本宽度。这允许换行。可以通过选项进行修改xlabel style。第 173 页的文档中显示了一个示例:

xlabel style={align=right,text width=3cm}

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    title=MWE,
    xlabel style= xlabel style={align=left,text width=2cm},{align=center}, xlabel={some\\x\\label},
    ylabel style={align=center}, ylabel={some\\y\\label},
    axis x line=middle,
    % axis y line=middle,
    xtick=\empty,
    ytick=\empty,
    ]
    \addplot[
    samples=100,
    domain=-2:2,
    ] {x};
    \end{axis}
    \end{tikzpicture}
\end{document}

编辑

只要 和xaxis分别yaxis位于默认位置(即底部和左侧),轴标签就会遵循多线,但如果yaxisxaxis移动到中心/中间,多线环境就不会起作用,我们会得到单线轴标签

在下面的例子中,将 移到yaxis中间,但将 保留在xaxis默认的底部位置——这里xaxis保留了多行环境,但对于yaxis

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xlabel style={
                                align=left,
                                text width=3cm
                                },
                xlabel=A quite long label with a line break,
                title=MWE,
%               xlabel style={
%                               align=center,
%                               text width=1cm
%                               },
%               {align=center}, 
%               xlabel={some x label},
                ylabel style={align=center}, 
                ylabel={some\\y\\label},
%               axis x line=middle,
                 axis y line=middle,
%               xtick=\empty,
%               ytick=\empty,
                ]
    \addplot[
    samples=100,
    domain=-2:2,
    ] {x};
    \end{axis}
    \end{tikzpicture}
\end{document}

现在如果xaxis也移动到中间,这里的多线也不会被遵守

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xlabel style={
                                align=left,
                                text width=3cm
                                },
                xlabel=A quite long label with a line break,
                title=MWE,
%               xlabel style={
%                               align=center,
%                               text width=1cm
%                               },
%               {align=center}, 
%               xlabel={some x label},
                ylabel style={align=center}, 
                ylabel={some\\y\\label},
                axis x line=middle,
                 axis y line=middle,
%               xtick=\empty,
%               ytick=\empty,
                ]
    \addplot[
    samples=100,
    domain=-2:2,
    ] {x};
    \end{axis}
    \end{tikzpicture}
\end{document}

也许其中一个传说可以解释

相关内容