LaTeX利用tikz繪製流程圖

LaTeX利用tikz繪製流程圖

1.前言

Tikz入手起來非常的困難,啃包的話有1000多頁,看Manual Notes的話不寫又很難入手,看一堆代碼很容易頭暈,還是得去寫去試試看,但是看doc還是最基本能有效的。最近向老師在B站做了一次直播,一邊看一邊敲可以學習基本的,之後就可以自己開始試錯了。

2.關於繪製簡單流程圖所需要的包

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

這是我最近剛學畫流程圖剛學會的包。

  1. tikz肯定是需要的。
  2. positioning主要是控制結點的時候所需要加載的包
  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{tikzpicutre}
    \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{tikzpicutre}
\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}

在這裏插入圖片描述
這裏我由於我之前繪圖的時候人爲的用了above = of ,所以自動將結點的中心移動了,如果畫箭頭的時候可以利用結構體訪問結點的位置。
\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吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章