LaTeX(3):使用TikZ绘制图形

PGF是一个用来进行图形绘制的(底层)包,TikZ是利用这个包实现的用户友好的接口。所以通常在LaTeX中会用TikZ来进行矢量图形的绘制。

基本概念

基本语法

要使用tikz进行图形绘制只需要简单引入tikz宏包,并将绘制代码包含在一个上下文中就可以了:

\usepackage{tikz}

\begin{tikzpicture}
% ...
\end{tikzpicture}

同样如果希望把图片作为一个figure,那么再套一层:

\usepackage{graphicx}
\usepackage{tikz}

\begin{document}
    \begin{figure}[h]
    \begin{tikzpicture}
        \draw (0, 0) -- (1, 1);
    \end{tikzpicture}
    \caption{这是一条直线}
    \end{figure}
\end{document}

坐标系和缩放

默认情况下TikZ使用的是笛卡尔坐标系,即是这样:

另外,TikZ提供了一个缩放的选项,可以用来缩放图形,所以不必要担心绝对坐标的问题:

\begin{tikzpicture}[scale=0.5]

甚至还可以针对x轴和y轴分别设置缩放:

\begin{tikzpicture}[xscale=0.5, yscale=0.3]

在TikZ中,默认的单位是厘米(cm)。如果希望改变这个值,可以这样设置:

\begin{tikzpicture}[x=2cm,y=1.5cm]

% 或者
\begin{tikzpicture}[x={(2cm,0cm)},y={(0cm,1.5cm)}]

图形绘制

直线

绘制直线:

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

绘制折线:

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

绘制背景网格:

\draw[help lines] (0,0) grid (3,3);

箭头

如果希望绘制箭头也十分方便:

\draw [->] (0,0) -- (2,0);        %→
\draw [<-] (0, -0.5) -- (2,-0.5); %←
\draw [|->] (0,-1) -- (2,-1);     %带尾巴的箭头
\draw [<->] (0, 0) -- (1, 1);     %双向箭头

线的粗细

线的粗细可以用如下来表示:

\draw [ultra thin] (0, 1) -- (2, 1)

总共可用的粗细如下:

或者直接指定线的粗细,默认的单位是点:

\draw [line width=12] (0,0) -- (2,0);
\draw [line width=0.2cm] (4,.75) -- (5,.25);

除此之外另一个选项是[help lines],用来绘制灰色的参考线。

\draw [help lines] (0, 5) -- (0, 0) -- (5, 0);
\draw [line width=2pt] (0, 0) -- (5, 5);
\draw [very thin] (0, 3) -- (4, 0);
\draw [thin] (0, 2) -- (5, 2);

样式及颜色

样式可以分为:

  • 虚线 \draw [dashed]
  • 实线 \draw [dotted]

颜色有很多直接可以用的颜色表示,类似css一样:

red, green, blue, cyan, magenta, yellow, black, gray, darkgray, lightgray,brown, lime, olive, orange, pink, purple, teal, violetand white

一个较为完整的例子:

\begin{tikzpicture}
    \draw [help lines] (0, 5) -- (0, 0) -- (5, 0) node [right=3]{Nice sample!};
    \draw [dashed, red, line width=2pt] (0, 0) -- (5, 5);
    \draw [blue, very thin] (0, 3) -- (4, 0);
    \draw [dotted, thin] (0, 2) -- (5, 2);
\end{tikzpicture}

几何图形

矩形

\draw [blue] (0,0) rectangle (1.5, 1);

网格

\draw [blue] (0,0) grid (1.5, 1);

\draw [red, ultra thick] (3, 0.5) circle [radius=0.5];

弧线

\draw [gray, ultra thick] (6,0) arc [radius=1, start angle=45, end angle= 120];

这个弧线的表示方法比较有意思,代表从(6, 0)出发,半径为1,初始角度为45°,当变成120°的时候停止。另一种方法:

\draw[very thick] (0,0) to [out=90,in=195] (2,1.5);

表示从(0,0)开始, 到(2, 1.5)这个点,起始角度为90°,到达的角度为195°。

感觉很难控制这个....

圆角折线

加多一个rounded corners就可以把折线变成圆角的了:

\draw [<->, rounded corners, thick, purple] (0,2) -- (0,0) -- (3,0);