【TikZ 简单学习(上):基础绘制】Latex下的绘图宏包

前置

  • Latex 可以解决绘制这些东西: ∫ a b 1 x d x \int_a^b\frac{1}{x}dx abx1dx 之类。
    现在有宏包 T k i Z TkiZ TkiZ 可以解决绘制定性的图片,用代码绘图,甚至写pdf书籍等工作。
  • 环境:使用软件 TexWorks,免费,大约占内存 8 G 8G 8G,有点大
    左边写代码,点击运行按钮后,后侧显示对应的pdf
    在这里插入图片描述
  • 本文按照官方文档进行简单学习
    即只跟着做一下基础的tutorial代码,不具体深究所有命令,毕竟:
    c m d cmd cmd 中输入 texdoc tikz 即可显示官方pdf的文档,有 1321 1321 1321 页…

简单图形绘制

基本架构

  • 首先查看基本架构
\documentclass{article} 	% 百分号后的为注释,不运行
\usepackage{tikz}			% 使用 tikz 包
\begin{document}			% 开始文档
We are working on
\begin{tikzpicture}			% 对于需要 tikz 绘图的内容,可以这样形式
\draw (-1.5,0) -- (1.5,0);	% 命令需要以分号结尾,表示调用 draw 方法,绘制从点 A 到点 B 的线段
\draw (0,-1.5) -- (0,1.5);
\end{tikzpicture}
\tikz \draw (-1.0,-1.0) -- (1.0,1.0);	% 或者对于简单的图形,使用 \tikz 单行命令绘制图形
\tikz \draw (0,-1.0) -- (1.0,0);
\end{document}

在这里插入图片描述

  • 注意到,我们绘制了三幅图,也就是对于一个 tikzpicture 是一副图。

路径绘制

  • 我们可以缩进来清晰代码之间的逻辑
    连续使用 -- 进行绘制路径。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
	\draw (-1.5,0) -- (1.5,0) -- (0,-1.5) -- (0,1.5);
\end{tikzpicture}
\end{document}

在这里插入图片描述

  • 我们可以绘制曲线路径
    这是第一种比较麻烦的方法。绘制一段曲线,有起点、起点控制点、终点、终点控制点组成。
    起点控制点表示曲线在起点处曲线切线的方向。
    为了方便,这里使用了 \filldraw 方法绘制出了其中这四个点
    使用 \draw A .. controls B and C .. D; 进行绘制曲线,这里起点为A,起点控制点为B,终点控制点为C,终点为D
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
	\filldraw [gray] (0,0) circle [radius=2pt]
	(1,1) circle [radius=2pt]
	(2,1) circle [radius=2pt]
	(2,0) circle [radius=2pt];
	\draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture}
\end{document}

在这里插入图片描述

  • 画圆形环路
    语法1:\draw A circle [radius=B]; 绘制圆心为A,半径为B的圆,单位可以是 p t pt pt 像素,或者 c m cm cm
    语法2:\draw A ellipse [x radius=B, y radius=C]; 绘制椭圆,圆心为A,还有两个半距的长度。
  • 这里可以看出,给前面基础图形设定元素,使用 [attr = x] 进行赋值,比如使用 [rotate=30] 进行图形旋转30度。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz \draw (0,0) circle [radius=10pt];
\tikz \draw (0,0) ellipse [x radius=20pt, y radius=10pt];
\tikz \draw (0,0) circle [radius=1cm];
\end{document}

在这里插入图片描述

  • 矩形路径绘制
    使用 \draw A rectangle B; 表示绘制对角顶点为A,B的矩形
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
	\draw (0,0) rectangle (0.5,0.5);
	\draw (-0.5,-0.5) rectangle (-1,-1);
\end{tikzpicture}
\end{document}

在这里插入图片描述

  • 网格线,与重复绘制
    使用 \draw [step=A] B grid C; 绘制从点B到点C,步长为A的网格。
    使用 [gray, very thin] 来修改网格线的颜色和粗细
\documentclass{article}
\usepackage{tikz}
\begin{document}
\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 [radius=1cm];
\end{tikzpicture}
\end{document}

在这里插入图片描述

添加样式/风格

  • 对于大量内容,可能我们都想要某一个风格,比如 [gray, very thin],每次都说明肯定很麻烦
    Style_Name/.style={A,B,C……} 可以让 [Style Name] 等价与 [A,B,C,……]
  • 我们把上述语句放在 \tikzset{} 中,来让全局可用
  • 这里 color=red!50 指颜色为50%的红。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{tikzpicture}
	\draw [MyStyle] (0,0) circle [radius = 1cm];
	\draw (2,0) circle [radius = 1cm];
\end{tikzpicture}
\end{document}

在这里插入图片描述

  • 其他一些可选的绘制风格
    粗细:ultra thin, very thin, thin, semithick, thick, very thick, ultra thick
    短线:dashed
    点线:dotted
    密度:loosely XXX, densely XXX ,这里 XXX 为短线或点线

弧线绘制

  • 弧线可以绘制圆或椭圆的一部分
    语法:\draw A arc[start angle=B, end angle=C, radius=D]; 即圆心坐标A,开始角度B,结束角度C,半径D
    对于椭圆,类似指定 x radius, y radius 即可。
    可以发现,这里的单位均为角度制。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{tikzpicture}[scale=3]
	\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 [radius=1cm];
	\draw (3mm,0mm) arc [start angle=0, end angle=30, radius=3mm];
\end{tikzpicture}

\begin{tikzpicture}
	\tikz \draw (0,0)
		arc [start angle=0, end angle=315,
			x radius=1.75cm, y radius=1cm];
\end{tikzpicture}

\end{document}

在这里插入图片描述

剪切

  • 有时候我们只需要图形的一个部分
    使用 \clip 图形; 语法。这里 图形 图形 图形 可以使用之前的圆,椭圆,矩形等图形。
    或者使用 \clip [draw] 图形 语法,绘制并剪切图形
\documentclass{article}
\usepackage{tikz}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}
\begin{tikzpicture}[scale=3]
	\clip [draw] (-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 [radius=1cm];
	\draw (3mm,0mm) arc [start angle=0, end angle=30, radius=3mm];
\end{tikzpicture}
\end{document}

在这里插入图片描述

抛物线和正弦曲线绘制

  • 对于抛物线,使用 \draw A parabola B; 绘制从点A到点B的抛物线
    对于正弦曲线,使用 \draw A B 绘制从点A到点B的曲线,这里点的坐标使用 sin(x,y)cos(x,y) 来表示
    可以连续使用 \draw A B C D …… 来绘制连续的正弦曲线。
  • 发现,输出的pdf鼠标移动上去可以放大展示。
\documentclass{article}
\usepackage{tikz}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}
\begin{tikzpicture}
	\draw (0,0) parabola (1,1);
\end{tikzpicture}

\begin{tikzpicture}
\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);
\end{tikzpicture}
\end{document}

在这里插入图片描述

填充和绘制

  • 使用 \fill 函数进行填充
    在构造填充回路时,建议使用 cycle 作为最后的坐标,可以看下下图两者的区别。
  • 使用 \fill[green!20!white] 表示填充使用20%的绿和80%的白。
\documentclass{article}
\usepackage{tikz}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}

\begin{tikzpicture}[line width=5pt]
	\draw (0,0) -- (1,0) -- (1,1) -- (0,0);
	\draw (2,0) -- (3,0) -- (3,1) -- cycle;
\end{tikzpicture}

\begin{tikzpicture}[line width=5pt]
	\fill (0,0) -- (1,0) -- (1,1) -- (0,0);
	\fill (2,0) -- (3,0) -- (3,1) -- cycle;
\end{tikzpicture}

\end{document}

在这里插入图片描述

渲染

  • 为了让图形更高大上,可以使用简单渲染
    使用 \shade 或者 \shadedraw来渲染
    使用 [posA colorA, posB colorB] 来表示过度位置和过度颜色,见下方代码
    使用 [ball] 表示渲染成球体
\documentclass{article}
\usepackage{tikz}
\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}

\begin{tikzpicture}[rounded corners,ultra thick]
	\shade[top color=yellow,bottom color=black] (0,0) rectangle +(2,1);
	\shade[left color=yellow,right color=black] (3,0) rectangle +(2,1);
	\shadedraw[inner color=yellow,outer color=black,draw=yellow] (6,0) rectangle +(2,1);
	\shade[ball color=green] (9,.5) circle (.5cm);
\end{tikzpicture}

\end{document}

在这里插入图片描述

  • 可以发现,上述我们使用了 A rectangle +B 的语法,这里A,B是坐标点。
    +A 表示当前点的坐标为:上一个指明的点的坐标下x,y的变化量。
    ++A 表示在 +A 的基础上,让该点成为新的指明的点。
    与此类似还有 -A--A 的语法
    比如 (1,2) rectangle ++(1,2) 等价与 (1,2) rectangle (2,4)

绘制箭头

  • [->] , [<-], [<->] 属性表明绘制箭头的种类,使用一般的 \draw 绘制即可
    可以重叠叠加,比如 [<<-] 或者 [><>-<><<]
  • 使用 [>=kind of end arrow tip] 来更改箭头的类型,比如使用 arrows.meta 包中 Stealth,更改箭头类型如下:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {arrows.meta}

\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}

\begin{tikzpicture}
\draw [<<<<->] (0,0) arc [start angle=180, end angle=30, radius=10pt];
\draw [<->] (1,0) -- (1.5cm,10pt) -- (2cm,0pt) -- (2.5cm,10pt);
\end{tikzpicture}

\begin{tikzpicture}[>=Stealth]
\draw [->] (0,0) arc [start angle=180, end angle=30, radius=10pt];
\draw [<<-,very thick] (1,0) -- (1.5cm,10pt) -- (2cm,0pt) -- (2.5cm,10pt);
\end{tikzpicture}

\end{document}

在这里插入图片描述

循环

  • 使用 \foreach \var in {set} {Do something} 来遍历变量 var
    注意! $something$ 中两个美元符号中间用来输出 Latex 符号
    \x 表示变量 x
  • \foreach 可以嵌套,如下面:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {arrows.meta}

\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}

\begin{tikzpicture}
	\foreach \x in {1,2,3} {$x =\x$, }
\end{tikzpicture}

\begin{tikzpicture}
	\foreach \x in {1,2,...,5,7,8,...,12}
	\foreach \y in {1,...,5}
	{
	\draw (\x,\y) +(-.5,-.5) rectangle ++(.5,.5);
	\draw (\x,\y) node{\x,\y};
	}
\end{tikzpicture}


\end{document}

在这里插入图片描述

添加文本信息

  • 上面代码发现,node 关键词后面会跟着可选内容 [] 以及花括号 {补充文本信息}
    第一个例子,使用 \draw A node[fill=yellow!80!black]{C} 在点A绘制后,在该位置添加一个文本信息C,使用填充格式
    第二个例子,使用 [sloped,above][sloped,below] 更改字体在曲线上显示的位置
    使用 [anchor=north] 更改显示字锚点的基础位置
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {arrows.meta}

\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}

\begin{tikzpicture}
	\draw (0,0) rectangle (2,2);
	\draw (0.5,0.5) node [fill=yellow!80!black]
	{Text at \verb!node 1!}
	-- (1.5,1.5) node {Text at \verb!node 2!};
\end{tikzpicture}

\begin{tikzpicture}
	\draw (0,0) .. controls (6,1) and (9,1) ..
		node[near start,sloped,above] {near start}
		node {midway}
		node[very near end,sloped,below] {very near end} (12,0);
\end{tikzpicture}

\end{document}

在这里插入图片描述

绘制一个角度

  • 我们希望绘制一个角度
    使用 \coordinate (A) at B; 表示给定点A,位置为B
    使用 \coordinate (A) at (B:C) 表示给定点A,位置为角度B处C距离。B为弧度制。
    于是我们绘制线段 AB、BC,然后使用 pic {angle = A--B--C} 来给定三个点,绘制他们之间的弧线角度。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {angles,quotes}

\tikzset{MyStyle/.style={color=red!50,very thin}}
\begin{document}


\begin{tikzpicture}[scale=3]
	\coordinate (A) at (1,0);
	\coordinate (B) at (0,0);
	\coordinate (C) at (30:1cm);
	\draw (A) -- (B) -- (C)
	pic [draw=green!50!black, fill=green!20, angle radius=9mm,
	"$\alpha$"] {angle = A--B--C};
\end{tikzpicture}

\end{document}

在这里插入图片描述

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值