pgfplots 中的标签定位

pgfplots 中的标签定位

我正在使用 lualatex,但在将 grouplot 的标签定位到图的底部时遇到了麻烦。这是我的代码

% !Mode:: "TeX:UTF-8"
\documentclass[a4paper,12pt]{book} 

\usepackage{fontspec}                    
\usepackage{polyglossia}                 

\usepackage{amsmath,empheq}                     
\usepackage{mathtools}                   
\usepackage{amscd}                       
\usepackage{amsxtra}                     
\usepackage{amsthm}                      
\usepackage{unicode-math}                

\usepackage{tikz}                                     
\usepackage{pgfplots}                    
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=newest}                

\setmainfont{Linux Libertine O}          
\setmathfont[bold-style=ISO]{Cambria Math}     

% pgfplotsset style
\pgfplotsset{
    gaxisonly axis/.style={
    axis lines=middle,
    axis line style={->}, 
    ticks=none,
    clip=false
    }
}

\begin{document}

\begin{figure}[htbp]
\centering
\begin{tikzpicture}[font=\footnotesize]
\begin{groupplot}[
group style={
group size=4 by 1,
xlabels at=edge bottom,
vertical sep = 1.5cm},
gaxisonly axis,
height=4cm,
width=4cm]
\nextgroupplot[xlabel={Function 1}]
\addplot[blue,mark=none,domain=-0.5:0.5,samples=100, thick]{abs(x)};
\nextgroupplot[xlabel={Function 2}]
\addplot[blue,mark=none,domain=-0.5:0,samples=100, thick]{-x};
\addplot[blue,mark=none,domain=0:0.5,samples=100, thick]{x^(1/3)};
\nextgroupplot[xlabel={Function 3}]
\addplot[blue,mark=none,domain=-0.5:0.5,samples=100, thick]{sqrt(abs(x))};
\nextgroupplot[xlabel={Function 4}]
\addplot[blue,mark=none,domain=-0.5:0.5,samples=100, thick]{x/abs(x)*abs(x)^(1/3)};
\addplot[blue,mark=none,domain=-0.5:0,samples=100, thick]{-abs(x)^(1/3)};
\end{groupplot}
\end{tikzpicture}
\caption{Some functions}
\end{figure}

\end{document}

结果如下

在此处输入图片描述

如您所见,文本位于图表的 x 轴上方,而不是底部。我该如何修复?

答案1

此标签定位是由于axis lines=middle风格而发生的gaxisonly axis根据 pgfplots 文档,此参数设置的内容类似于

every axis x label/.style={at={(current axis.left of origin)},anchor=south west}

有两种方法可以避免这种情况:

  • 使用axis lines*=middle,在你的情况下将提供正确的结果
  • every axis x label/.style={at={(current axis.south)}, anchor=north}设置线条样式后添加类似的内容。

相关内容