Tikz作图教程:说说图形颜色填充那些事儿
初學Tikz 作圖的朋友也許覺得給圖形填充顏色很費事兒,尤其是那些不規(guī)則圖形的顏色填充。
事實上,只要你掌握一個基本思想和三個填充技巧,圖形顏色填充就會變得易如反掌!下面我們詳細介紹這些方法,學會本文中的各個例子,再復雜的顏色填充問題都不在話下了!
本文較長,需要的朋友可以收藏備查!
基本思想
由曲線段(折線段)首尾相連得到的封閉圖形都可以通過命令\filldraw[fill=<color>]將它填充為設(shè)定的顏色<color>。
值得注意的是,如果折線段(曲線段)的起點和終點沒有連起來,使用上述命令填充顏色時, Tikz會自動將起點和終點用線段連結(jié)從而將其封閉,然后用設(shè)定的顏色填充。例如,一段圓弧使用上述命令時,填充以后得到一個弓形。
下面的例子,就是用這種基本思想實現(xiàn)的。
初學者掌握這個基本思想,就可以應付一些簡單圖形的顏色填充了。
如果需要對一些復雜的不規(guī)則圖形進行填充則需要學習下面的三大填充技巧。
填充技巧一:剪裁(clip)
命令\clip 顧名思義就是“剪裁”的意思,它和\draw的區(qū)別就是:它不畫出后面的路徑,而是用這個路徑對后面的作圖進行剪裁。
說得通俗一點,例如\clip(-1,-1)rectangle(1,1)就是剪出一塊正方形的畫布,后面所有的作圖命令作出的圖形將只顯示這個正方形內(nèi)部的部分。
注意:
- 如果要畫出剪裁的路徑可以在命令\clip后面添加draw選項,例如,
\clip[draw](-1,-1)rectangle(1,1)。 - 如果希望剪裁命令只是作用在某個局部,那么使用scope環(huán)境將它們包裹起來。
下面的例子給我們直觀地顯示\clip命令的效果:
\begin{tikzpicture}\draw[fill=blue02,opacity=0.9](-1,-1)rectangle(1,1);\draw[fill=red01,opacity=0.9](-1,0)circle(1);\begin{scope}\clip[draw](3,-1)rectangle(5,1);\draw[fill=red01,opacity=0.9](3,0)circle(1);\end{scope}\begin{scope}\clip[draw](8,0)circle(1);\draw[fill=blue02,opacity=0.9](8,-1)rectangle(10,1);\end{scope} \end{tikzpicture}圖形:
例1
\begin{tikzpicture} \begin{scope}\clip(0,-1)circle(1);\draw [draw=gray,fill=red!30](-1,-1)arc(-90:0:1)--(-1,0)--cycle;\draw[draw=gray,fill=red!30](0,0)arc(180:270:1)--(1,0)--cycle; \end{scope} \begin{scope}[rotate=180]\clip(0,-1)circle(1);\draw [draw=gray,fill=red!30](-1,-1)arc(-90:0:1)--(-1,0)--cycle;\draw[draw=gray,fill=red!30](0,0)arc(180:270:1)--(1,0)--cycle; \end{scope} \clip[draw](-1,-1)rectangle(1,1); \draw[gray](0,-1)circle(1)(0,1)circle(1); \end{tikzpicture}圖形:
填充技巧二:奇偶性法則(even odd rule)
奇偶性法則是顏色填充的黃金法則。妙用奇偶性法則可以大大簡化作圖代碼。
奇偶性法則:使用\filldraw[fill=<color>,even odd rule]命令作圖時,如果選項里有even odd rule, 那么
當幾條路徑有重疊時,那么重疊部分屬于奇數(shù)條路經(jīng)時將被著色,重疊部分屬于偶數(shù)條路經(jīng)時將不被著色。
一個簡單容易理解的例子如下:
例2
\begin{tikzpicture}[scale=1, pattern1/.style={draw=red,pattern color=red!60,pattern=north east lines}, ] \filldraw[thick,pattern1,even odd rule](0,0)circle(1.5 cm)(2,0)circle(1.5 cm); \end{tikzpicture}圖形:
例3 用奇偶性法則重畫例1.
\begin{tikzpicture}\filldraw[fill=orange!30,even odd rule](-1,-1)rectangle(1,1)(-1,-1)rectangle(1,1)(0,0)arc(0:-90:1)arc(180:90:1)arc(180:270:1)arc(0:90:1)arc(180:90:1)arc(360:270:1)arc(0:90:1)arc(180:270:1); \end{tikzpicture}圖形:
例4 太極圖
\begin{tikzpicture}\filldraw [draw=black,fill=black, even odd rule](2,0)arc[radius=2cm,start angle=0,end angle=180](0,0)arc[radius=1cm,start angle=0,end angle=180](0,0)arc[radius=1cm,start angle=180,end angle=360](1,0)circle(5pt);\draw(0,0)circle(2cm);\draw[fill=black](-1,0)circle(5pt); \end{tikzpicture}圖形:
填充技巧三:圖層(layer)
圖層的技巧很容易理解,后畫的圖形著色將覆蓋先畫的圖形的著色。利用這種特點可以非常方便地實現(xiàn)不規(guī)則圖形的顏色填充。
如果要使重疊區(qū)域的幾種顏色混合,可以設(shè)置填充顏色的透明度:例如設(shè)置opacity=0.6,那么重疊區(qū)域的顏色將以混合后的顏色顯示。
例5
\tikzset{help line/.style={gray,thin},every path/.style={draw}}\begin{tikzpicture}%\draw[help line](-2.5,-2.5)grid(2.5,2.5); % \draw(-2.5,0)--(2.5,0)(0,-2.5)--(0,2.5);\draw[fill=red01,opacity=0.8](-1.3,0)circle(1.8);\draw[fill=blue03,opacity=0.8](1.3,0)circle(1.8);\draw[fill=blue02,opacity=0.8](0,1.3)circle(1.8);\draw[fill=yellow01,opacity=0.8](0,-1.3)circle(1.8);\node at (-2.2,0){\color{white}1};\node at (-1,1){\color{white}2};\node at (0,2){\color{white}3};\node at (1,1){\color{white}4};\node at (2.2,0){\color{white}5};\node at (0,0.8){\color{white}6};\node at (-0.8,0){\color{white}7};\node at (0,0){\color{white}8};\node at (0.8,0){\color{white}9};\node at (1,-1){\color{white}10};\node at (0,-0.8){\color{white}11};\node at (-1,-1){\color{white}12};\node at (0,-2){\color{white}13}; \end{tikzpicture}圖形:
例6
\begin{tikzpicture}[every path/.style={draw}]%\draw[help line] (-5,-5)grid(5,5); % \draw (-5,0)--(5,0)(0,-5)--(0,5);\begin{scope}[rotate=45]\draw[fill=pink01,opacity=0.8](0,0)ellipse[x radius=2,y radius=1];\draw[fill=green01,opacity=0.8](-0.3,1)ellipse[x radius=1.9,y radius=0.8];\end{scope}\begin{scope}\draw[rotate around={135:(-2,0)},fill=green02,opacity=0.6](-2,0)ellipse[x radius=2,y radius=1];\draw[rotate around={135:(-2,0)},fill=blue01,opacity=0.6](-2.3,-1)ellipse[x radius=1.9,y radius=0.8]; \end{scope}\node at (-1.6,1.3){1}; \node at (-1,1){2}; \node at (-0.4,1.3){3}; \node at (-2,0.8){4}; \node at (-1.5,0.5){5}; \node at (-1,-0.2){6}; \node at (-0.5,0.5){7}; \node at (0,0.8){8}; \node at (0.8,0.5){9}; \node at (0,-0.5){10}; \node at (-1,-1.2){11}; \node at (-1.9,-0.5){12}; \node at (-2.8,0.5){13}; \end{tikzpicture}圖形:
填充技巧四:以圖案填充(patterns)
在作一些與面積有關(guān)的平面圖形以及在畫表示集合的交、并、補等關(guān)系的韋恩圖時,常常使用斜線填充某些部分,這是用圖案填充的例子。利用Tikz預定義好的幾十種圖案可以非常方便的實現(xiàn)圖案填充。
使用圖案填充的要點有:
- 使用圖案填充時,要調(diào)用patters庫,就是在導言區(qū)添加下面的語句:
\usetikzlibrary{patterns}. - 選用某種圖案:pattern=<name>
- 設(shè)置圖案顏色:pattern color=<color>
- 常見的圖案選項有:
| horizontal lines | 水平線 |
| vertical lines | 豎直線 |
| north east lines | 右上-左下斜線 |
| north west lines | 左上-右下斜線 |
| grid | 水平格子 |
| crosshatch | 傾斜格子 |
| dots | 水平點 |
| crosshatch dots | 斜點 |
| fivepointed stars | 五角星 |
| sixpointed stars | 六角星 |
| bricks | 磚形 |
| checkerboard | 棋盤形狀 |
例7 斜線填充例1中的圖形
\begin{tikzpicture}\filldraw[pattern color=red!30,pattern=,even odd rule](-1,-1)rectangle(1,1)(-1,-1)rectangle(1,1)(0,0)arc(0:-90:1)arc(180:90:1)arc(180:270:1)arc(0:90:1)arc(180:90:1)arc(360:270:1)arc(0:90:1)arc(180:270:1); \end{tikzpicture}圖形:
例8 磚形圖案填充
本例來自pgfmanual說明文檔。
\begin{tikzpicture} \def\mypath{(0,0) -- +(0,1) arc (180:0:1.5cm) -- +(0,-1)} \fill [red!80!black] \mypath; \pattern[pattern color=white,pattern=bricks] \mypath; \end{tikzpicture}圖形:
填充技巧五:以漸變色填充(shade)
使用漸變色填充的兩個基本命令是\shade和\shadedraw, 兩者的區(qū)別是前者只用漸變色填充而不畫出路徑(輪廓),后者是先填充然后畫出路徑(輪廓)。
使用漸變填充也要先調(diào)用庫文件,即在導言區(qū)添加命令:\usetikzlibrary{shadings}。
常用的漸變填充有下面四種:
- (1)線性axis
- (2)輻射:radical
- (3) 球形:ball
- (4) 色輪:colorwheel
前三種默認填充顏色都是“灰-白”漸變,線性填充默認為從上到下漸變。
其它填充選項見下表:
例9 漸變色填充舉例
本例來自pgfmanual說明文檔。
\begin{tikzpicture}\draw[top color=red] (0,0) rectangle (2,1);\draw[bottom color=red] (3,0) rectangle (5,1);\draw[middle color=red] (6,0) rectangle (8,1);\draw[left color=red] (9,0) rectangle (11,1);\draw[right color=red] (12,0) rectangle (14,1);\draw[inner color=red] (0,-2) rectangle (2,-1);\draw[outer color=red] (3,-2) rectangle (5,-1);\shade[shading=color wheel black center](7,-2)circle(1.5);\shade[shading=color wheel white center](10.5,-2)circle(1.5); \end{tikzpicture}圖形:
今天的介紹就到這里,喜歡的話歡迎點贊、留言和分享,謝謝啦!
【LaTeX微信交流加群:】
如果你希望交流 LaTeX 使用或者Tikz 作圖或者Beamer制作幻燈片方面的問題,請先添加作者微信:niltxz,然后加入作者的LaTeX+TikZ+Beamer 交流微信群。
總結(jié)
以上是生活随笔為你收集整理的Tikz作图教程:说说图形颜色填充那些事儿的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018上C语言程序设计(高级)作业-
- 下一篇: Karaf教程之Config Admin