这是这个问题:
当在轴环境中使用移位范围时,坐标(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}