答案摘要
TorbjørnT. 已通过评论回答了这个问题。如果使用范围,则
xshift
需要将单位指定为cm
。如果稍后缩放整个图片,这也有效。谢谢!所包含的代码现在正常工作。-JLDiaz 提供的解决方案同样有效,并且不需要任何单位!这里使用 移动图像
shift={(x,z)}
(确保获得所有括号)。Ignasi 提出了第三种可能的解决方案,同样是对该问题的评论。对我来说,
pic
如果需要在同一张图片中重复几次元素,这种方法可能特别有用。感谢所有好的反馈!
问题
我正在尝试为乳胶文档制作插图,效果很好。我知道代码还可以更好,但目前对我来说已经足够好了。嗯,大部分情况下。
因为代码是纯粹编写的(至少我认为是这样),所以移动一组对象并不是那么容易。我找到的解决方案(这里) 确实scope
有效。但是我对它的工作方式有点不满意。
在下面的代码中,对象按预期围绕点 (0,0) 旋转了 15 度。但是,并没有像手动移动所有内容那样以相同的比例xshift=2
移动整个scope
对象。2
2
我知道axis
环境有自己的坐标系统,可以通过 访问(axis cs:10,10)
。 有类似的吗scope
?
可能这是一个可以适应的解决方案(我猜我可以将图像 - 椅子,桌子和电脑 - 分成不同的部分)?
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}%[scale=0.750]
\tikzstyle{every node}=[font=\small]
% Temp stuff for construction only
\draw[step=.2, lightgray, very thin] (0,0) grid ++(15.0,8.0);
\foreach \s in {0,1,...,15.0}{
\draw [lightgray](\s,0) -- (\s,-.1) node[below, lightgray]{\s};
}
\foreach \s in {0,1,...,8.0}{
\draw [lightgray](0,\s) -- (-.1,\s) node[left, lightgray]{\s};
}
% The Inside of the house
\begin{scope}[xshift=2cm, rotate=15] % unit was not in original code for question!
% Table
\draw (11.9,0) rectangle ++(0.1,1.); % leg 1
\draw (12.8,0) rectangle ++(0.1,1.); % leg 2
\draw (11.8,1.) rectangle ++(1.2,0.05); % Surface plate
% Computer (iMac) ;-)
\fill (12.72,1.45) circle (0.03); % The nob in the back
\draw (12.74,1.45) .. controls (12.8,1.25) and (12.8,1.22) .. (12.8,1.06) -- (12.55,1.06); % Stand
\draw [fill=white, rotate around={-10:(12.6,1.15)}] (12.6,1.2) rectangle ++(0.07,0.6); % the iMac
% Chair
\draw (11.1,0) -- ++(0.2,0.2) -- ++ (0.2,-0.2); % leg part 1
\draw (11.3,0.2) -- ++(0,0.45); % leg part 2
\draw (11.05,0.65) rectangle ++(0.5,0.05); % seat
\draw (11,0.75) rectangle ++(0.05,0.5); % back support
\draw (11.15,0.65) .. controls (10.95,0.57) and (10.95,0.75) .. (11,0.95); % connection seat - back
\end{scope}
\end{tikzpicture}
\end{document}
附言:有人能给我提供一份全面的指南来理解不同的坐标系tikz
吗?我还没找到类似的东西。
这是我想要创建的最终图像。我知道它并不多,并且代码(以上只是其中的一部分)可能可以写得更高效,但我对结果还是非常满意的。
答案1
有趣的是,该选项shift
接受一对坐标作为参数,这些坐标不需要单位(注意括号周围的括号):
\begin{tikzpicture}
\node[draw] {Foo};
\draw (1,1) circle (0.2);
\begin{scope}[shift={(1,1)}]
\node[draw] {Bar};
\end{scope}
\end{tikzpicture}
您可以像平常一样在 中使用scale
、x
和/或选项。y
tikzpicture