导师让我们写的GPS作业,点名要用LaTeX里的tikz库,又是需要自学的东西。LaTeX和Tikz 的安装就略过了,网上方法一大堆。照着用户手册,直奔主题。
用户手册地址:
链接:https://pan.baidu.com/s/1cI4MLRkRZ36_u0M60zSsjA
提取码:m5zt
基础直线
首先,试试它给的模板:
\documentclass{article} % say
\usepackage{tikz}
\begin{document}
We are working on
\begin{tikzpicture}
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\end{tikzpicture}.
\end{document}
编译运行(注意是pdfLatex引擎),是画了一个坐标轴。
可见\draw (-1.5,0) -- (1.5,0);
表示从点(-1.5,0)画一条直线到(1.5,0),默认单位是1cm。
画图需要tikz绘图环境,和写公式一样,通过\begin{tikzpicture}
开始\end{tikzpicture}
结束。
也可以不必这么麻烦用tikzpicture环境,直接写\tikz,参数在后面直到遇见分号(就像数学环境$$),例如我画一个路(用户手册称之为path)
\tikz \draw (-1.5,0) -- (1.5,0) -- (0,-1.5) -- (0,1.5);
显然path是连通的。
所有的tikz绘图都需要在{tikzpicture}或者\tikz环境下。
曲线、圆、椭圆和弧
用灰色圆圈填充几个点:
\begin{tikzpicture}
\filldraw [gray]
(0,0) circle (2pt)
(1,1) circle (2pt)
(2,1) circle (2pt)
(2,0) circle (2pt);
\end{tikzpicture}
格式就是\filldraw [颜色]
点坐标 点类型 大小
在这之上画个曲线,以(0,0)为起点(2,0)为重点,“控制点”为(1,1),(2,1)\draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
原文章说,曲线怎么得出来的数学算法并不重要,只要知道曲线总是向着控制点去的,比如起点处的切线方向是朝着第一个控制点去的,以此类推。
我可以据此画个半圆:
\begin{tikzpicture}
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\draw (-1,0) .. controls (-1,0.555) and (-0.555,1) .. (0,1) .. controls (0.555,1) and (1,0.555) .. (1,0);
\end{tikzpicture}
还得算切点,太麻烦了,用circle命令直接画:
\tikz \draw (0,0) circle (10pt);
圆心坐标 circle 半径长
把它揉瘪成椭圆:
\tikz \draw (0,0) ellipse (20pt and 10pt);
中心坐标 ellipse 长轴长and短轴长
甚至可以让它逆时针转个30度
\tikz \draw[rotate=30] (0,0) ellipse (6pt and 3pt);
画出来三个圈:
可以用\draw (0,0) rectangle (0.5,0.5);
画个矩形,参数是两个对角坐标点。
\begin{tikzpicture}
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\draw (0,0) circle (1cm);
\draw (0,0) rectangle (0.5,0.5);
\draw (-0.5,-0.5) rectangle (-1,-1);
\end{tikzpicture}
网格线也给安排上
\begin{tikzpicture}
\draw[step=.5cm,gray,very thin] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\draw (0,0) circle (1cm);
\draw (3mm,0mm) arc (0:30:3mm);
\end{tikzpicture}
网格步长、颜色(可省略)、线宽(可省略),两个对角线坐标点内画网格。
甚至随手用arc来了一段圆弧
arc前参数是起点,后面三个参数分别是起始角度,终值角度,半径(角度以笛卡尔坐标系为准)
如10:80:10pt表示画一段从10度到80度的圆弧,圆半径为10个像素点。
当然也可以写四个参数当做是画椭圆弧:
\tikz \draw (0,0) arc (0:315:1.75cm and 1cm);
如果嫌尺度不够大,可以在环境后面添加scale参数调整比如\begin{tikzpicture}[scale=3]
是放大了三倍。
如果嫌尺度太大了,可以用clip裁剪图片
\begin{tikzpicture}
\clip (-0.1,-0.2) rectangle (1.1,0.75);
\draw[step=.5cm,gray,very thin] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\draw (0,0) circle (1cm);
\draw (3mm,0mm) arc (0:30:3mm);
\end{tikzpicture}
这段代码是在原图的基础上,从(-0.1,-0.2)到(1.1,0.75)裁一个矩形出来。
也可以裁出一个圆来,裁的同时画出这个圆。
\clip[draw] (0.5,0.5) circle (.6cm);
下面整点高级的曲线画着玩玩:
抛物线:
\tikz \draw (0,0) rectangle (1,1) (0,0) parabola (1,1);
或者这样:
\tikz \draw[x=1pt,y=1pt] (0,0) parabola bend (4,16) (6,12);
画出来的抛物线相当于
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2的移位和放缩。
画个正余弦:
\tikz \draw[x=1.57ex,y=1ex] (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0) (0,1) cos (1,0) sin (2,-1) cos (3,0) sin (4,1);
manual上的内容太多了,目前只搬移了一部分,如果大家觉得有用了点个赞,我随喜赞叹 更新。
下一篇:利用emoji画GPS卫星2D分布图(2)