TikZ 轴环境内的范围发生偏移/x、y 缩放损坏

TikZ 轴环境内的范围发生偏移/x、y 缩放损坏

这是这个问题

当在轴环境中使用移位范围时,坐标(0,0)不在我将范围移位到的位置:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[every node/.style={inner sep=0}]
    \begin{axis}[
        xmin=20,
        xmax=170,
        ymin=0,
        ymax=130]
    \node[green] at (160,83) {x};
    \begin{scope}[shift={(160,83)}]
        \node[red] at (0,0) {x};
    \end{scope}
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

感谢链接的问题,我通过“重新定义”轴刻度设法使其工作:

\begin{scope}[shift={(160,83)}, x={(1,0)}, y={(0,1)}]

在此处输入图片描述

但为什么需要这样做?有人能解释一下这种行为吗?

答案1

axis坐标(0,0)不在(0,0)环境坐标处tikzpicture,因此您需要考虑到这一点。以下是实现此目的的一种方法。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[every node/.style={inner sep=0}]
    \begin{axis}[
        xmin=20,
        xmax=170,
        ymin=0,
        ymax=130]
    \node[green] at (160,83) {x};
    \begin{scope}[shift={($(160,83)-(0,0)$)}]
        \node[red] at (0,0) {o};
    \end{scope}
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容