如何使用 tikzpicture 移动图片的一部分?

如何使用 tikzpicture 移动图片的一部分?

我正在使用 绘制一幅图tikzpicture。假设该图由许多对象组成。在工作结束时,我意识到我只需要移动其中一个对象,比如向右移动 1 个单位。显然,我可以通过 (a,b) --> (a+1,b) 更改所有坐标。显然这不是一个好的解决方案。

在经典的环境图片中,有一个命令\put(x,y){...}允许您移动图片的整个子部分。

周围环境中有类似的东西吗tikzpicture? 有什么解决方法吗?

答案1

您可以将一个通用转换应用于多个对象,只需将它们放在一个范围内即可。示例来自TikZ/pgf 手册(第 25.3 节)

\begin{tikzpicture}
    \draw[help lines] (0,0) grid (3,2);
    \draw (0,0) rectangle (1,0.5);
    \begin{scope}[xshift=1cm]
        \draw[red] (0,0) rectangle (1,0.5);
        \draw[yshift=1cm] [blue] (0,0) rectangle (1,0.5);
        \draw[rotate=30] [orange] (0,0) rectangle (1,0.5);
    \end{scope}
\end{tikzpicture}

答案2

使用scope带有shift选项的,可采用任意移位向量。

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw[fill=red] (0,0) rectangle (1,1);
  \begin{scope}[shift={(1,1)}]
     \draw[fill=blue] (0,0) rectangle (1,1);
  \end{scope}
\end{tikzpicture}
\end{document}

enter image description here

shift的优点是,它与其他坐标一样,会受到重新定义x和单位的影响,而和则不受影响。比较yxshiftyshift

enter image description here

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw[fill=red] (0,0) rectangle (1,1);
  \begin{scope}[shift={(1,1)}]
     \draw[fill=blue] (0,0) rectangle (1,1);
  \end{scope}
  \begin{scope}[xshift=-1cm]
     \draw[fill=green] (0,0) rectangle (1,1);
  \end{scope}
\end{tikzpicture}
\end{document}

enter image description here

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.5cm,y=0.5cm] % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  \draw[fill=red] (0,0) rectangle (1,1);
  \begin{scope}[shift={(1,1)}]
     \draw[fill=blue] (0,0) rectangle (1,1);
  \end{scope}
  \begin{scope}[xshift=-1cm]
     \draw[fill=green] (0,0) rectangle (1,1);
  \end{scope}
\end{tikzpicture}
\end{document}

相关内容