網路城邦
上一篇 回創作列表 下一篇   字體:
TiKz 的 node 的控制
2015/04/09 12:33:53瀏覽4343|回應0|推薦0

前文介紹了node的概況,本文開始介紹如何控制node,畫出心中理想的圖形。node是帶有圖形,文字,座標的物體,所以它的控制,主要是針對這三者進行。

首先圖形的部分,圖形包括尺寸線條和圖形著色等部分,

圖形䅜類前文已提,基本上是長方形和圓形,圖形的線條部分,前面也提過不少。先著著色指令開始。draw 是指線條的著色,如

\node[circle, draw=red, line width=2pt, dashed, draw opacity=0.5] (a) at (0,0){A};

這個指令是位在(a)=(0,0)這個圓形node A,其邊是紅色,寛2pt,透明度0.5的虛線。

著色方式有fill 和 shade二種。

\node[circle, fill=red!50] (b) at (1,0){B};

把位在(b)=(1,0)的圓形B塗上50%的紅色。

接下來是shading,雖然有三種方式的定義,但不如自己來。

\node[circle, shading] (c) at (2,0){C};

把(c)=(2,)的圓形C塗上黑白的漸層。基本上shading有三個值可以選擇:

shading=axis, 上下方向,黑白二色漸層。如果想用其他的顏色,可以這樣:

[top color=white, bottom color=blue] ... 這樣就是上下的漸層了。

shading=radial,圓心內外的黑白漸層。要用其他色,就

[inner color=white, outer color=blue] ...。

shading=ball, 球形的漸層。故定是藍色,如要其他色彩,就是

[shading=ball, ball color=red] ...,那麼就是紅球的漸層。

shading angle=20, 漸層旋轉20度。

left color=blue, right color=yellow, 直接從左到右的水漸層。

所以,node的漸層著色也很簡單。

圖形尺寸控制有:

inner sep=3pt, inner sep 是圖形中文字和圖形外緣的距離。

inner xsep=2pt, inner ysep=2pt, 內部對x方向或y方向外緣的距離。

outer sep=3pt, 圖形外框對外緣的距離。

outer xsep, outer ysep,一樣如前述。

minimun height=1cm, 圖形最小高度(指inner sep,和outer sep無關),如果文字比內部空間大,就會以文字尺寸為主。

minimun width=2cm, 圖形最小寛度。

mininum size, 同時設定最小高度,寛度。

文字控制的部分有:

text=red, 文字顏色。

font=\itshape, 文字字型,大小等。

align=center, (flush left,left, right, flush right)文字對齊,使用\\可以多行。

text width=3cm, 字塊寛度。

標示的控制label=方位:文字

方位可以用上下左右,也可以用東西南北,或是直接使用某個角度值也行。

位置的控制,是直接指定坐標。如

\node (a) at (0,0){};

如果覺得寫座標很雜煩,使用positioning library:

\usetikzlibrary{positioning}

positioning這個library提供了一些對above, below等相對的位置命令的算法支援,其中一個命令很實用,就是使各node相對位置來畫圖,不使用座標的寫法,例如:

\node (a) {A};

\node[below=of a] (b){B};

\node[left=of a](c){C};

這樣,就可以畫出二個node, B在A的下方,而C在A的左方。就不用一直寫入坐標。

用上(above)下(below)左(left)右(right)的相對關係,就能夠做圖。

使用這個寫法時,有二個重要參數:

node distance=2cm, 設定各node的距離單位。

on grid, 設定各node一定會在 node distance 的單位整數點上面。

用這個library來畫流程圖十分方便好用。

如果正式開始畫圖,每個node都要做這些繁瑣的設定,那不煩死了?其實我們可以根據要畫的內容,先對每個node的狀態做設定,例如:

\begin{tikzpicture}[every node/.style={draw, circle}]

...圖中的每個node都是圓形的物件

\end{tikzpicture}

或是在用\tikzstyle{every node./style={...}}來使用node。

但是這樣一來,每個node都會畫出一個圓圈,反而沒有彈性。但是可以自已設定不同的node style:

\tikzset{every diamond node/.style={text=white,inner color=blue, outer color =white, inner sep=0.1cm, aspect=2}, every circle node/.style={draw, double}}

\tikzset{mynode./style=rectangle,draw top color=red, draw bottom color=white,line width=2pt}

\draw [help lines](-4.9,-4.9) grid (4.9,4.9);

\draw [->,very thick] (-4,0)--(4,0) node [right]{$x$};

\draw [->, very thick] (0,-4)--(0,4) node [above]{$y$};

\node[diamond] (A) at (-2,1){A};

\node[circle] (B) at (2,2){B};

\node[mynode] (C) at (2,-2){C};

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=paraquat&aid=21988154