![TikZ 轴环境内的范围发生偏移/x、y 缩放损坏](https://linux22.com/image/406041/TikZ%20%E8%BD%B4%E7%8E%AF%E5%A2%83%E5%86%85%E7%9A%84%E8%8C%83%E5%9B%B4%E5%8F%91%E7%94%9F%E5%81%8F%E7%A7%BB%2Fx%E3%80%81y%20%E7%BC%A9%E6%94%BE%E6%8D%9F%E5%9D%8F.png)
这是这个问题:
当在轴环境中使用移位范围时,坐标(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}