Tikz学习笔记(一)

前言

私以为,学习语言最好的方式就是“案例学习”,通过学习例子,可以迅速地熟悉语言的语法,特点等,快速上手,及时的得到反馈,能很好地激发并保持学习兴趣。

Tikz是$\LaTeX$中绘图的一个包,可以绘制出精美的图形,非常适合学术出版中插入的绘制。

本系列通过“Make your hands dirty”的方式,学习Tikz手册中的例子,并对每条语句进行详细的分析注释,快速地掌握Tikz的基本绘图技巧。

目的在于:1)作为自己学习的备忘录 ,方便复习 2)方便后来人,希望能够帮助到Tikz的初学者。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
\documentclass[tikz,border=4pt]{standalone}  % 图片的边界是4pt
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{intersections} %求线与线之间的交点

\begin{document}
%开启tikzpicture环境
\begin{tikzpicture}[scale=3, line cap=round, >=latex,
%scale对图片进行缩放,线的头部采用圆形round,其他rect方形,butt为无头部,>代表箭头的样式
% Styles
axes/.style=, %轴采用默认样式
important line/.style = {very thick}, %定义线的宽度为very thick
information text/.style = {rounded corners, fill = red!10, inner sep=1ex} ]
%圆角边框,内部填充颜色为red!10,即红色的10%,文字与边框的距离为1ex

% Colors 定义四种颜色名称,后续可直接引用
\colorlet{anglecolor}{green!50!black}
\colorlet{sincolor}{red}
\colorlet{tancolor}{orange!80!black}
\colorlet{coscolor}{blue}

% The graphic
\draw[help lines,step=0.5cm] (-1.4,-1.4) grid (1.4,1.4);
% grid是网格命令,矩形的左下角和右上角坐标,线的类型为help line,步长为0.5cm

\draw (0,0) circle [radius=1cm];
%画圆,圆心为(0,0),半径radius为1cm

%开启scope环境,在整个大圆中,绘制一个局部图
\begin{scope}[axes]
\draw[->] (-1.5,0) -- (1.5,0) node[right] {$x$} coordinate(x axis);
% 画x轴线,起点为(-1.5,0)终点为(1.5,0);->在线段末端画箭头, node在为点(1.5,0)添加标签,right标签位置是在点的右侧,标签符号为x,该点的名称为x axis


\draw[->] (0,-1.5) -- (0,1.5) node[above] {$y$} coordinate(y axis);
%同理

% \foreach 命令指示对数组中的每个元素进行后面的操作
% \x/\xtext 表示数组元素可以是\x 形式的或\x/\xtext 形式的,中间的“/”是固定用法
% 同一个元素位置上用符号/并列两种形式时,该元素可用两种形式之一引用,例如-0.5
% 选项 [xshift=\x cm] 指示将后面绘制的线段沿着x 轴平移 \x cm
\foreach \x/\xtext in {-1, -.5/-\frac{1}{2}, 1}
\draw[xshift=\x cm] (0pt,1pt) -- (0pt,-1pt) node[below, fill=white] {$\xtext$};
%node是在点(0pt,-1pt)移动\x cm后的位置处,加标签,位置是点的下方below,背景为白色,内容为\xtext


% y轴上面加标签
\foreach \y/\ytext in {-1, -.5/-\frac{1}{2}, .5/\frac{1}{2}, 1}
\draw[yshift=\y cm] (1pt,0pt) -- (-1pt,0pt)
node[left,fill=white] {$\ytext$};

\end{scope} %结束scope环境

%\filldraw是填充\fill和绘图\draw的结合。[]内的fill是填充的颜色,draw是线的形式
\filldraw[fill=green!20, draw=anglecolor] (0,0) -- (3mm,0pt) arc [start angle=0, end angle=30, radius=3mm];
% arc绘制圆弧线,start angle是起始角度,end angle是终止角度,radius是半径,默认圆心是(0,0)


\draw (15:2mm) node[anglecolor] {$\alpha$};
%极坐标点,15是角度,2m是长度,线型是anglecolor


\draw[important line, sincolor]
(30:1cm) -- node[left=1pt,fill=white] {$\sin \alpha$} (30:1cm |- x axis);
%绘制垂线,(30:1cm)是极坐标
% node[left=1pt,fill=white]在左侧打标签{$\sin \alpha$}
% 另一个点是通过求垂足得到的,即点30:1cm向下,x axis点向左,两条线相交


%同上
\draw[important line, coscolor] (30:1cm |- x axis) -- node[below=2pt,fill=white] {$\cos \alpha$} (0,0);

% \path 命令声明它后面的对象是路径,路径的名字name是upward line,但是并没有绘制path
\path [name path = upward line] (1,0) -- (1,1);
%同上
\path [name path=sloped line] (0,0) -- (30:1.5cm);

% 求路径 upward line 与 sloped line 的交点,by=t将该交点命名为 t
\draw [name intersections={of=upward line and sloped line, by = t},very thick,orange] (1,0) -- node [right=1pt,fill=white] {$\displaystyle \tan \alpha \color{black}= \frac{{\color{red}\sin \alpha}}{\color{blue}\cos \alpha}$}(t);
%\displaystyle 定义显示公式样式


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


%选项 [xshift=1.85cm] 将绘制的标签右移 1.85cm
% node才能打标签
% node的右侧,文本宽度为6cm,文本框的风格为 information text
\draw[xshift=1.85cm] %相当于给原点加标签,并平移
node[right, text width=6cm, information text]
{
The {\color{anglecolor} angle $\alpha$} is $30^\circ$ in the
example ($\pi/6$ in radians). The {\color{sincolor}sine of
$\alpha$}, which is the height of the red line, is
\[
{\color{sincolor} \sin \alpha} = 1/2.
\]
By the Theorem of Pythagoras ...
};

\end{tikzpicture} %结束tikzpicture环境
\end{document}

单位圆与三角函数线