在 TikZ 中创建带有点和连接的图表

在 TikZ 中创建带有点和连接的图表

我是 TikZ 的新手,但我发现这是在 LaTeX 中绘制并包含以下几个图表的最简单方法。

图表

什么代码会生成上述图表?(显然不是文字或箭头,我只是表明每一行在垂直方向上间距相等,并且水平分量之间的间隙是该水平空间的一半。

干杯。

答案1

这是使用 TikZ 的快速演示,部分基于 Thruston 的 Metapost 答案。

从正方形开始,制作正方形最简单的方法是 TikZrectangle操作,其用途如下

\draw (x1,y1) rectangle (x2,y2);

因此,只需用 between 这个词指定两个对角的坐标rectangle

对于其他形状,你可以逐段绘制线条,例如

\draw (0,0) -- (0,1) -- (1,1);

它从 (0,0) 到 (0,1) 再到 (1,1) 画一条线。

要在行尾添加点,您可以使用arrows.meta库中的箭头。因此,您需要将其添加\usetikzlibrary{arrows.meta}到前言中。箭头在命令的可选参数中指定\draw,通常为\draw [<name of arrow tip>-<name of arrow tip>] ...;。箭头可以添加到路径的一端或两端。

因此,要在线的末端添加黑点,请使用

\draw [{Circle[]}-{Circle[]}] (0,0) -- (0,1);

Circle[]是箭头尖的名称。之所以在其周围使用括号对 ( {}),是因为您需要向解析器“隐藏”括号,这样]箭头尖的右括号 ( ) 就不会与 的可选参数的右括号混淆\draw

弧线可以用多种方式绘制。在下面的代码中,我使用了语法。这在和(x1,y1) .. controls (x2,y2) and (x3,y3) .. (x4,y4)之间绘制了一条曲线。我无法解释它如何比 TikZ 手册中的第一个教程更好地工作,所以我引用了第 2.4 节:(x1,y1)(x4,y4)

为此,TikZ 提供了一种特殊的语法。需要一个或两个“控制点”。它们背后的数学并不简单,但基本思想如下:假设您在点处 x,第一个控制点是。然后曲线将开始“朝处y的方向行进”,也就是说,曲线在 处的切线将指向。接下来,假设曲线应该在 处结束,第二个支撑点是。那么曲线确实会在 处结束,并且曲线在 处的切线将经过。yxxyzwzzw

我使用的控制点位于起点和终点右侧一个单位处。

下面的代码中还使用了另外两种语法,我之所以添加它们,是因为它们可能很有用。第一个是环境scope,它允许您向其中的所有命令添加设置。在这里我使用了

\begin{scope}[xshift=3cm]
...
\end{scope}

毫不奇怪,这将使其中的路径坐标向右移动 3 厘米。(此时可以提到默认单位长度为 1 厘米,因此\draw (0,0) -- (0,1);将绘制一条长度为 1 厘米的线。)

另一点是使用相对坐标。例如,如果你写下\draw (1,1) -- +(1,0) -- +(1,1);这将从(1,1)(1+1,1+0) = (2,1)画一条线(1+1,1+1) = (2,2)。使用\draw (1,1) -- ++(1,0) -- ++(1,1);(注意两个加号)这将从 到 画一条线(1,1)(1+1,1+0) = (2,1)换句话说(2+1,1+1) = (3,2),使用一个加号,前一个显式坐标将始终是参考点,但使用两个加号,参考坐标将被移动。

也就是说,正如 Tom Bombadil 在评论中提到的那样,通过阅读 TikZ 手册(第 2-6 章)中的教程,您可能会学到所有这些内容,甚至更多。

在此处输入图片描述

\documentclass[border=4mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (1,1);
\draw (0,1.5) rectangle +(1,1);
\draw [{Circle[]}-{Circle[]}] (2.5,0) -- (1.5,0) -- (1.5,1) -- (2.5,1);

\begin{scope}[xshift=3cm]
\draw [{Circle[]}-{Circle[]}] (0,0) -- ++(1,0) -- ++(0,1) -- ++(-1,0) -- 
     ++(0,1) -- ++(1,0) -- ++(0,1) -- ++(-1,0);

\draw [{Circle[]}-{Circle[]}] (2.5,0) -- (1.5,0) -- (1.5,1) -- 
     (2.5,1) .. controls (3.5,1) and (3.5,3) .. (2.5,3) -- 
     (1.5,3) -- (1.5,2) -- (2.5,2);
\end{scope}
\end{tikzpicture}
\end{document}

答案2

这是一个简单的方法元帖子,这可能会帮助您入门。请点击上面的链接获取更多详细信息,以及指向可用的优秀教程和手册的指针。

在此处输入图片描述

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

u := 1cm;

draw (0,0) -- (u,0) -- (u,u) -- (0,u) -- 
     (0,2u) -- (u,2u) -- (u,3u) -- (0,3u);

fill fullcircle scaled 5 shifted origin;
fill fullcircle scaled 5 shifted (0,3u);

draw (2.5u,0) -- (1.5u,0) -- (1.5u,u) -- 
     (2.5u,u) {right} .. (3.5u,2u) {up} .. {left} (2.5u,3u) -- 
     (1.5u,3u) -- (1.5u,2u) -- (2.5u,2u);

fill fullcircle scaled 5 shifted (2.5u,0);
fill fullcircle scaled 5 shifted (2.5u,2u);

endfig;
end.

相关内容