想要让以下形状在 TikZ 中发挥作用
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- (0,1) node {1};
\draw (0,1) -- (1,1) node {2};
\draw (1,1) -- (1,0) node {3};
\draw (1,0) -- (0,0) node {4};
\end{tikzpicture}
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- ++ (1,1) node {1};
\draw (1,1) -- ++ (1,-1) node {2};
\draw (0,0) -- ++ (2,0) node {3};
\end{tikzpicture}
答案1
尝试理解此代码,您就会知道如何绘制所有这些。
从坐标的定义开始。
\coordinate (1) at (0,0,2);
在点 处创建一个名为 的coordinate node
(node
无维度 ) 。意思是。 如果您需要将某个特定单位更改为、、 ... 稍后将使用 来引用点 (0,0,2) 。 无需记住其特定坐标。1
(x,y,z)=(0,0,2)
2
2cm
cm
mm
in
(1)
在每个坐标上放置第二个圆圈并添加标签。
\fill (1) circle (1pt) node [below] {1};
将绘制并填充一个圆,圆心1pt
位于坐标 处,圆心为半径(1 个点)1
。圆的下方放置一个带文本的节点1
。由于点 1 至 4 下方有标签,点 5 至 8 上方有标签,因此可以使用循环foreach
。
最后,draw
坐标之间的线:
\draw[dashed] (1)--(4)--(3) (4)--(8);
从坐标 1 到 4 和 3画一条dashed
线。接下来将笔放在坐标 4 上并画另一条线到坐标 8。
您可以使用nodes
(coordinates
是节点)来定位其他节点。 JLDiaz 在他的评论中解释了如何使用calc
语法(需要在序言中使用 \usetikzlibrary{calc})来做到这一点:
\coordinate (17) at ($(1)!.5!(5)$);
17
在“线 (1)-(5) 上与 (1) 距离为 50% 的点”上定义一个新坐标(!.5! 表示 50%)。17
定义坐标后,您可以再次应用\fill (17) circle (1pt) node [left] {17};
该坐标来绘制圆和标签。
另一种语法可能是
\path (1) -- (5) coordinate[pos=0.5] (17);
意思是从 移动1
到5
并pos=0.5
从该路径移入一个名为 17 的坐标节点。此语法不使用calc
库。
作为练习:您认为\coordinate (27) at ($(1)!.5!(7)$);
会怎样?
在完整代码之前,我有个小建议。如果你被TiKZ
大量的文档吓到了,可以看看
现在完整的代码
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (1) at (0,0,2);
\coordinate (2) at (2,0,2);
\coordinate (3) at (2,0,0);
\coordinate (4) at (0,0,0);
\coordinate (5) at (0,2,2);
\coordinate (6) at (2,2,2);
\coordinate (7) at (2,2,0);
\coordinate (8) at (0,2,0);
\coordinate (17) at ($(1)!.5!(5)$);
\coordinate (27) at ($(1)!.5!(7)$);
\foreach \i in {1,...,4}
\fill (\i) circle (1pt) node [below] {\i};
\foreach \i in {5,...,8}
\fill (\i) circle (1pt) node [above] {\i};
\fill (17) circle (1pt) node [left] {17};
\fill (27) circle (1pt) node [above] {27};
\draw (1) --(2) --(3) --(7) --(6)--(5)--(8)--(7);
\draw (1)--(5) (2)--(6);
\draw[dashed] (1)--(4) --(3) (4)--(8);
\end{tikzpicture}
\end{document}