根据限制使用“当前轴”进行定位?

根据限制使用“当前轴”进行定位?

我尝试指定x axis labelx 轴箭头下方的位置,就像xticklabels。它对大多数图都适用。但是,当使用 修改 y 轴的范围时ymin=..., 的坐标current axis.south east会发生变化(我不喜欢),但此外, 的坐标位置会朝着意想不到的方向变化。

截断的图导致环境发生奇怪的修改,原因是什么current axis

下面提供了带有ymin=1.0(ok)、ymin=0.8(ok)、ymin=1.2(不良结果)和ymin未定义(奇怪结果)的图片,以及 MWE。

ymin=1.0,结果正常 ymin=0.8,结果正常 ymin=1.2,结果不理想 没有 ymin,结果很奇怪

梅威瑟:

\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.13}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
        axis x line=bottom,
        every axis x label/.style={at={($ (current axis.south east) + (0,-2.135pt)$)},red,anchor=base,yshift=-0.75em},
        xticklabel style={anchor=base,yshift=-0.75em},
        xlabel={$t$}, 
        ymin=1.0, % <-- min of addplot
        %ymin=1.2, % <-- random truncation
    ]
    \addplot[black] coordinates {(0,2) (1,1) (2.2,2)};

\end{axis}
\end{tikzpicture}
\end{document}

答案1

您可以使用xticklabel cs来定位x axis label

every axis x label/.style={at={(xticklabel cs:1)},anchor=south,red},
typeset ticklabels with strut,
xlabel={$t$\strut},

里面和选项用于确保ticklabel和标签具有相同的高度和相同的深度\strutxlabeltypeset ticklabels with strut

在此处输入图片描述

代码:

\documentclass[tikz,margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\foreach \ymin in {.8,1,1.2}{
\begin{tikzpicture}
\begin{axis}[
        axis x line=bottom,
        every axis x label/.style={at={(xticklabel cs:1)},anchor=south,red},
        typeset ticklabels with strut,
        xlabel={$t$\strut}, 
        ymin=\ymin
    ]
    \addplot[black] coordinates {(0,2) (1,1) (2.2,2)};
\end{axis}
\end{tikzpicture}}
\end{document}

更新

如果你真的想像x axis label示例中那样手动移动绝对值,请使用

at={([yshift=-2.135pt]current axis.south east)}

或者

at={($ (current axis.south east) + (0pt,-2.135pt)$)}

请注意,您只能0pt使用0

在此处输入图片描述

代码:

\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usetikzlibrary{calc}
\begin{document}
\foreach \ymin in {.8,1,1.2}{
\begin{tikzpicture}
\begin{axis}[
        axis x line=bottom,
        every axis x label/.style={
            at={($ (current axis.south east) + (0pt,-2.135pt)$)},
            red,anchor=base,yshift=-0.75em
        },
        xticklabel style={anchor=base,yshift=-0.75em},
        xlabel={$tg$}, 
        ymin=\ymin
    ]
    \addplot[black] coordinates {(0,2) (1,1) (2.2,2)};
\end{axis}
\end{tikzpicture}}
\end{document}

相关内容