LaTeX利用tikz绘制流程图

LaTeX利用tikz绘制流程图

0.前言

  Tikz入手起来非常的困难,啃包的话有1000多页,看Manual Notes的话不写又很难入手,看一堆代码很容易头晕,还是得去写去试试看,但是 看 doc 还是最基本能有效的 。最近向老师在B站做了一次直播,一边看一边敲可以学习基本的,之后就可以自己开始试错了。

1.关于绘制简单流程图所需要的包

\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{arrows,arrows.meta}

tikz是核心,而后面的是加载里面的库。

1. tikz肯定是需要加载的。

2. positioning主要是控制结点的时候所需要加载的tikz的库

3. shapes.geometric主要是定义结点外部框所需要的,这里面支持了菱形等各种形状

4.arrows.meta 可以使得你在画箭头的时候可以使用。其中 -Stealth,-stealth是不同的箭头还是需要注意的。

3.结点、可选参数、坐标系……

坐标系:常用的画布,极坐标(plus:因为刚入门不久所以还需要多画多了解,所以就记一下)

\documentclass[UTF8]{ctexart}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{xcolor}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{arrows,arrows.meta}

\begin{document}
  \begin{tikzpicture}
    \draw [help lines] (0,0) grid (2,2);
    \draw  (1,1) circle(0.5);  
    \node (point) [text = red] at (1.1,1.1) {o};
    \draw [thick,blue] (0,0) -- (30:1cm);
  \end{tikzpicture}
\end{document}

像这里就简单的画了网格,一个圆,一个结点,一条线
在这里插入图片描述

  1. \draw [help lines] (0,0) grid (2,2);其中[ ]里面的是可选选项,你可以添加许多参数,\draw就是画,在(0,0)点画了一个网格,到(2,2)点,而help lines本身tikz帮你定义好的的一种线形,比较的淡
    2.\draw (1,1) circle(0.5); 就是在(1,1)点画一个圆.看完这两句话你大概知道了直角坐标系。
    3.\draw [thick,blue] (0,0) -- (30:1cm); 这个(30:1)是一种极坐标表达,30度,1cm ,–表示画的是线,thick是一种较细的线型,这里面有很多的参数你可以设置,详情还是得看doc.
    4.\node (point) [text = red] at (1.1,1.1) {o}; 这个node就是一个结点。要注意的是这个结点实际是一个矩形。比如我这里的中心设置在1.1实际它是一个在(1.1,1.1)的矩形。这点对画流程图非常的重要.如果后期你需要用箭头连线的时候可以利用访问结点的东南西北去连线。
    在这里插入图片描述
\begin{tikzpicture}
    \node (jiedian) [blue,text =  red,draw] at (0,0) {o};  
    \node (jiedian1) [blue,text =  red,draw,above = of jiedian]  {$o_1$};
    \draw [-Stealth,red] (jiedian.center) -- (jiedian1.south);
\end{tikzpicture}

\node (jiedian) [blue,text = red,draw] at (0,0) {o};这里由于加了一个draw参数所以也就看到了,实际就是一个矩形的结点。

每句话后面一定要加上封号即;!!!
每句话后面一定要加上封号即;!!!
每句话后面一定要加上封号即;!!!

重要的事情说三遍。
有了这些知识之后简单的画一个流程图。

4.画一个自己的流程图

\documentclass[UTF8]{ctexart}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{xcolor}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{arrows,arrows.meta}

\begin{document}
    \tikzstyle{arrow}=[-Stealth]
    \tikzstyle{lingxing} =  [fill = yellow!30,diamond,draw,shape aspect = 2,inner sep = 0.4pt,thick,line width = 0.5pt]
    \tikzstyle{pxsbx}=[trapezium, trapezium left angle=75, trapezium right angle=105, minimum width=3em, text centered, draw = black, fill=white,line width=0.5pt]
    \tikzstyle{juxing} = [rounded corners,inner sep = 1.5pt,draw,rectangle,line width = 0.5pt,fill = white,minimum width = 3em]

    \begin{tikzpicture} [node distance = 1]
        \begin{scope}
        \node (zhunbei)[lingxing] at (5,5) {数据准备};
        \node (caijian) [juxing,below = of zhunbei] {数据预处理}; 
        \node (chongtouying) [juxing,below  =of caijian]  {原始NDVI};
        \node (b1) [juxing,below  =of chongtouying]  {真正NDVI}; 
        \node (b2) [juxing,below  = of b1] {去除水体后的影像};
        \node (soil) [juxing,fill = brown!20 ] at (7,-2.5) {NDVI soil};
        \node (veg)  [juxing,fill = green!70] at (3,-2.5) {NDVI vegt};
        
        \node (trueveg) [juxing,fill = green!20] at (5,-3.5) {VFC};
        \end{scope}
        \draw[arrow] (zhunbei.south)  --  (caijian.north);
         \draw[arrow] (caijian.south) -- node[left]{重投影} node [right][right]{裁剪} (chongtouying.north);
        \draw[arrow] (chongtouying.south) -- node [right] {$b1*0.0001$} (b1.north);
        \draw[arrow] (b1.south) -- node[right]{MOD44W} (b2.north);
        \draw [arrow] (b2.south) --   (soil.north);
        \draw [arrow] (b2.south) --   (veg.north);
        \draw [arrow] (soil.south) -- (trueveg.north);
        \draw [arrow] (veg.south) -- (trueveg.north);
    \end{tikzpicture}

其中 tikzstyle 是定义结点的样式时候用的,可以让你省去重复添加可选参数的步骤。

\tikzstyle{lingxing} = [fill = yellow!30,diamond,draw,shape aspect = 2,inner sep = 0.4pt,thick,line width = 0.5pt]
例如其中 fill 是填充,diamond 是菱形, inner sep是文本距离内框距离
画出来就是这个样子的。。

结语

tikz 是个神奇的库,可以绘制各种个样的矢量图,刚刚开始入门就记录一下,以后写论文画流程图就不要 word 自己画矩形再画了。还是多看看 doc 多读读 mannual notes 吧。

最后,我将在另外一个账号写博客,有兴趣的可以关注。

<think>嗯,用户想用LaTeXTikZ来画e的x次方的像。首先,我得回忆一下TikZ的基本绘方法。TikZLaTeX中一个强大的绘工具,可以用来绘制各种形,包括函数像。 首先,需要加载TikZ包,通常在文档的导言区添加\usepackage{tikz}。不过,有时候可能需要额外的库,比如axis库来创建坐标轴,所以可能还要加上\usetikzlibrary{axes}或者更常见的\usetikzlibrary{arrows, decorations.pathmorphing, backgrounds, positioning, fit, petri, calc},不过对于简单的坐标轴,可能用axis库更方便。或者,可能用户指的是pgfplots,这是一个基于TikZ的绘库,更适合绘制函数像,所以可能需要加载pgfplots库。这时候应该检查是否正确引用pgfplots,并设置合适的参数。 然后,绘制坐标轴。使用\draw[->] (x轴)和\draw[->] (y轴)来画出箭头表示的坐标轴。可能需要调整坐标轴的范围,比如x从-3到3,y从0到某个最大值,比如e^3大概是20左右,所以y轴可能到20。不过需要根据实际显示效果调整。 接下来,绘制指数函数e^x的曲线。使用\draw[domain=...] plot (\x, {exp(\x)});。这里需要注意TikZ中的指数函数是exp(x),所以正确的语法应该是plot (\x, {exp(\x)})。同时,设置domain参数来确定x的范围,比如domain=-3:3,这样曲线会从x=-3画到x=3。 然后,添加标签,比如坐标轴的标签x和y,以及可能的标题。标签可以通过node命令在坐标轴的末端添加。例如,在x轴的右端加上node[right] {$x$},在y轴的上端加上node[above] {$y$}。 可能需要添加网格,让形更清晰。使用\draw[gray, dotted]来绘制网格线,或者使用grid命令,但需要调整步长和样式。 另外,用户可能希望在中标出函数表达式,比如在曲线旁边添加$y=e^x$的标签,这可以通过在适当的位置放置node实现,比如在某个点(如(1, e^1)的位置)添加node[anchor=west] {$y = e^x$}。 检查示例代码是否正确,确保没有语法错误,比如括号是否闭合,是否正确使用花括号,分号是否遗漏等。例如,在plot命令中,函数的表达式需要用花括号括起来,如{exp(\x)},而domain参数也需要正确设置。 另外,考虑是否需要调整形的比例,避免像过于扁平或者过于狭窄。可以使用xscale和yscale参数,或者在axis环境中设置width和height选项,如果使用pgfplots的话会更方便。 可能用户对TikZ的基本绘流程不太熟悉,所以需要一步步说明,从加载包到绘制坐标轴,再到绘制函数曲线,添加标签和网格,最后调整样式。同时,提醒用户可能需要编译两次才能看到正确的结果,尤其是涉及到交叉引用或其他动态元素时。 还要考虑是否使用pgfplots库,因为对于复杂的函数像,pgfplots比纯TikZ更方便。例如,使用\begin{axis}环境可以自动处理坐标轴的范围、刻度、标签等,但用户的问题明确提到使用TikZ,所以可能需要以TikZ为主,或者结合pgfplots。 总结步骤应该是:加载TikZ和必要的库,开始tikzpicture环境,绘制坐标轴,绘制指数函数曲线,添加标签和网格,调整样式,最后结束环境。同时,给出完整的示例代码,并解释每一部分的作用,确保用户能够理解并修改参数。 可能还需要注意指数函数在x较大时的快速增长,导致y轴范围过大,影响像的可视效果,因此可能需要适当调整x的domain范围,比如只画到x=2,或者调整y轴的上限,使用ymax参数,或者在TikZ中手动设置坐标轴的范围。 最后,生成相关问题,如如何调整坐标轴范围、添加例、绘制其他函数等,帮助用户进一步学习。</think>以下是用LaTeX TikZ绘制$y = e^x$像的示例代码及说明: ```latex \documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture}[scale=0.8] % 绘制坐标轴 \draw[->, thick] (-3,0) -- (3.5,0) node[right] {$x$}; \draw[->, thick] (0,-1) -- (0,20) node[above] {$y$}; % 添加网格线 \draw[gray!30, dotted] (-3,-1) grid (3.5,20); % 绘制指数函数曲线 \draw[domain=-3:2.5, smooth, thick, blue] plot (\x, {exp(\x)}) node[right] {$y = e^x$}; % 标注特殊点 \draw[fill=red] (0,1) circle (2pt) node[above right] {$(0,1)$}; \end{tikzpicture} \end{document} ``` 主要功能说明: 1. 通过`\draw[->]`创建带箭头的坐标轴 2. 使用`grid`命令添加浅灰色虚线网格 3. `plot (\x, {exp(\x)})`核心绘命令,`domain`指定定义域 4. 通过`node`添加函数标签和特殊点标注 5. `scale=0.8`控制整体像缩放比例[^1]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值