【TikZ簡単学習【後編】:基本描画】Latex上での描画マクロパッケージ
その上
複数のノードを描画する
方法 1:複数のノードを描画するために 使用します \path A node[attr]{info}
。ノードは「パス」とは何の関係もありません。
\documentclass{
article}
\usepackage{
tikz}
\begin{
document}
\begin{
tikzpicture}
\path ( 0 , 2 ) node [ shape= circle, draw] {
}
( 0 , 1 ) node [ shape= circle, draw] {
}
( 0 , 0 ) node [ shape= circle, draw] {
}
( 1 , 1 ) node [ shape= rectangle, draw] {
}
( - 1 , 1 ) node [ shape= rectangle, draw] {
} ;
\end{
tikzpicture}
\end{
document}
方法 2: ここに追加する必要がある の省略 \node
です 。つまり、 前述したように、 意味は であり、描画の意味です。 ここで次 のように省略できます \path node
at
\node at A [attr]{info};
[draw]
[shape=circle]
[circle]
\documentclass{
article}
\usepackage{
tikz}
\begin{
document}
\begin{
tikzpicture}
\node at ( 0 , 2 ) [ circle, draw] {
} ;
\node at ( 0 , 1 ) [ circle, draw] {
} ;
\node at ( 0 , 0 ) [ circle, draw] {
} ;
\node at ( 1 , 1 ) [ rectangle, draw] {
} ;
\node at ( - 1 , 1 ) [ rectangle, draw] {
} ;
\end{
tikzpicture}
\end{
document}
ノードに統一スタイルを追加する
ノードにはテキストがありません。なぜノードにはまだサイズがあるのでしょうか? TikZ
はテキストの周囲にスペースを自動的に追加する ため inner sep
、 を変更して [inner sep = 0pt]
そのような内容を変更できます。 ただし、ノードが適切に表示されるようにするには、最小サイズを設定してください。 [minumun size = 6mm]
次に、統一されたスタイルを設定することです [XXX/.style={……}]
。
\documentclass{
article}
\usepackage{
tikz}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node at ( 0 , 2 ) [ place] {
} ;
\node at ( 0 , 1 ) [ place] {
} ;
\node at ( 0 , 0 ) [ place] {
} ;
\node at ( 1 , 1 ) [ transition] {
} ;
\node at ( - 1 , 1 ) [ transition] {
} ;
\end{
tikzpicture}
\end{
document}
ノードに名前を付けます
ノードに名前を付けると、後続の操作が便利になり、座標描画を個別に計算する必要がなくなります。 (name)
, 名前には特殊文字などを使用できず、アンダースコアとハイフンを使用できることに注意してください。
TikiZ
\node [A] (B) at C
構文は、またはなど の複数の並列属性の順序に対して比較的緩やかです \node (B) [A] at C
。
\documentclass{
article}
\usepackage{
tikz}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node[ place] ( waiting 1 ) at ( 0 , 2 ) {
} ;
\node[ place] ( critical 1 ) at ( 0 , 1 ) {
} ;
\node[ place] ( semaphore) at ( 0 , 0 ) {
} ;
\node[ transition] ( leave critical) at ( 1 , 1 ) {
} ;
\node[ transition] ( enter critical) at ( - 1 , 1 ) {
} ;
\end{
tikzpicture}
\end{
document}
相対位置を指定して描画する
多くの座標が上に示されていますが、実際、相対位置によって描画することもできます。 を インポートし \usetikzlibrary {positioning}
てから、次の構文を使用する必要があります。 [below = of name]
など [right = of name]
、それらの間の距離は です。 node distance
デフォルトはノードの中心間、またはノード間の距離です。境界距離。
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
} ;
\node[ transition] ( enter critical) [ left= of critical] {
} ;
\end{
tikzpicture}
\end{
document}
ノードにラベルを付ける
方法 1: 姓を持つノードを追加し、属性を に設定し、 ノードの北 [red,above]
に追加します。テキスト情報は次のようになります。 (semaphore.north)
{s \e 3}
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
} ;
\node[ transition] ( enter critical) [ left= of critical] {
} ;
\node [ red, above] at ( semaphore. north) {
$s\le 3 $} ;
\end{
tikzpicture}
\end{
document}
方法 2: label 属性を 使用して、ラベル情報を直接追加します。 [label=above:$info$]
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical,
label= above: $s\le3$] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
} ;
\node[ transition] ( enter critical) [ left= of critical] {
} ;
\end{
tikzpicture}
\end{
document}
複数のラベルを指定することもできます。 60度の位置にラベルを追加する場合は こちら、 270度の位置にラベルを追加する場合はこちらを使用します [label=60]
[label=-90]
[every label/.style={}]
ラベルのスタイルを変更するために 使用します。
\tikz
\node [ circle, draw, label= 60 : $60 ^ \circ$, label= below: $- 90 ^ \circ$] {
my circle} ;
リンクされたエッジの描画
方法 1: 構文を使用する \draw [->] (A.west) -- (B.east)
か \draw A .. controls B and C .. D
曲線を描く ここでは、開始点と終了点を示す必要があります。
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
} ;
\node[ transition] ( enter critical) [ left= of critical] {
} ;
\draw [ -> ] ( enter critical. east) -- ( critical. west) ;
\draw [ -> ] ( waiting. west) . . controls + ( left: 5 mm) and + ( up: 5 mm)
. . ( enter critical. north) ;
\end{
tikzpicture}
\end{
document}
方法 2: しかし、これは愚かです。 簡単な記述方法は、次のコードのように、上記の指示をすべて省略することです。 自動的かつインテリジェントに適切な方向を選択してくれる からです。 TikZ
\draw [ -> ] ( enter critical) -- ( critical) ;
\draw [ -> ] ( waiting) . . controls + ( left: 8 mm) and + ( up: 8 mm)
. . ( enter critical) ;
方法 3:または、曲線を描画する ために を使用する 代わりに、 新しい構文 を使用してみてください 。つまり、指定された 属性は、座標から出る、または座標に入る円弧の角度を表します。 \draw [->] A to B
\draw [->] A .. B
\draw [->] A to [out=B,in=C] D
in,out
\draw [ -> ] ( enter critical) to ( critical) ;
\draw [ -> ] ( waiting) to [ out= 180 , in= 90 ] ( enter critical) ;
方法 4: を使用して [bend left=A]
左右の曲がりの度合いを指定し、対応するリンク曲線を描画することもできます。
\draw [ -> ] ( waiting) to [ bend right= 45 ] ( enter critical) ;
方法 5: 糖衣構文。 \node A edge B edge C……
点 A を点 B および点 C に結ぶエッジを描画するために使用します。
\node[ transition] ( enter critical) [ left= of critical] {
}
edge [ -> ] ( critical)
edge [ < - , bend left= 45 ] ( waiting)
edge [ -> , bend right= 45 ] ( semaphore) ;
包括的な描画コードは次のとおりで、 edge
比較的単純な構文を使用することをお勧めします。
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
arrows. meta, positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ,
bend angle= 45 ,
pre/ . style= {
< - , shorten <= 1 pt, >= {
Stealth[ round] } , semithick} ,
post/ . style= {
-> , shorten >= 1 pt, >= {
Stealth[ round] } , semithick} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
}
edge [ pre] ( critical)
edge [ post, bend right] ( waiting)
edge [ pre, bend left] ( semaphore) ;
\node[ transition] ( enter critical) [ left= of critical] {
}
edge [ post] ( critical)
edge [ pre, bend left] ( waiting)
edge [ post, bend right] ( semaphore) ;
\end{
tikzpicture}
\end{
document}
線の端にラベルを追加する
[上篇]
などを使用して、行の上部/中央/下部に情報を追加する方法を学習しました。 ここ [sloped, below]
での要件は、行の 端に 情報を追加する ことです。 属性を使用するだけです。 このプロパティを使用すると、 線の反対側の描画が反映されます。 以下のコードを参照してください。 [auto]
[swap]
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
arrows. meta, positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ,
bend angle= 45 ,
pre/ . style= {
< - , shorten <= 1 pt, >= {
Stealth[ round] } , semithick} ,
post/ . style= {
-> , shorten >= 1 pt, >= {
Stealth[ round] } , semithick} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
}
edge [ pre] ( critical)
edge [ post, bend right] node[ auto , swap] {
2 } ( waiting)
edge [ pre, bend left] ( semaphore) ;
\node[ transition] ( enter critical) [ left= of critical] {
}
edge [ post] ( critical)
edge [ pre, bend left] node[ auto ] {
3 } ( waiting)
edge [ post, bend right] node[ auto ] {
4 } node[ auto , swap] {
5 } ( semaphore) ;
\end{
tikzpicture}
\end{
document}
曲がりくねった線と複数行のテキストを描画する
\usetikzlibrary {decorations.pathmorphing}
ライブラリ の追加 蛇行ラインを追加するために 使用します。また、 などの他のパラメータを変更することもできます。 [decoration={snake}]
[amplitude, segment length, post length]
複数行のテキストは非常に単純で、 LateX
構文と同様に、 \\
折り返すために使用します。 テキストの長さによって自動的にセグメント化するために 使用することもできます。 [text width=3cm]
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
decorations. pathmorphing}
\begin{
document}
\begin{
tikzpicture}
\draw [ -> , decorate,
decoration= {
snake, amplitude= .4 mm, segment length= 2 mm, post length= 1 mm} ]
( 0 , 0 ) -- ( 3 , 0 )
node [ above, align= center, midway]
{
replacement of\\
the \textcolor{
red} {
capacity} \\
by \textcolor{
red} {
two places}
} ;
\end{
tikzpicture}
\end{
document}
レイヤーマップ
絵を描いた後、絵の背景の後ろに特定の色の背景長方形を追加することが望まれます。 グラフのサイズは動的であるため、描画する座標を指定するか、レイヤー Layer を使用するかを選択できます。 レイヤー グラフはライブラリをインポートする必要があり backgrounds
、ライブラリは fit
ライブラリを使用し、両方をインポートする必要があります
これらの要素のオーバーレイに対応するために 使用する 背景レイヤーを描画する scope
場所を指定するものを 追加します。 [on background layer]
[fit = A B C D E]
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
arrows. meta, backgrounds, fit, positioning}
\begin{
document}
\begin{
tikzpicture}
[ place/ . style= {
circle, draw= blue! 50 , fill= blue! 20 , thick,
inner sep= 0 pt, minimum size= 6 mm} ,
transition/ . style= {
rectangle, draw= black! 50 , fill= black! 20 , thick,
inner sep= 0 pt, minimum size= 4 mm} ,
bend angle= 45 ,
pre/ . style= {
< - , shorten <= 1 pt, >= {
Stealth[ round] } , semithick} ,
post/ . style= {
-> , shorten >= 1 pt, >= {
Stealth[ round] } , semithick} ]
\node[ place] ( waiting) {
} ;
\node[ place] ( critical) [ below= of waiting] {
} ;
\node[ place] ( semaphore) [ below= of critical] {
} ;
\node[ transition] ( leave critical) [ right= of critical] {
}
edge [ pre] ( critical)
edge [ post, bend right] node[ auto , swap] {
2 } ( waiting)
edge [ pre, bend left] ( semaphore) ;
\node[ transition] ( enter critical) [ left= of critical] {
}
edge [ post] ( critical)
edge [ pre, bend left] ( waiting)
edge [ post, bend right] ( semaphore) ;
\begin{
scope} [ on background layer]
\node [ fill= black! 30 , fit= ( waiting) ( critical) ( semaphore)
( leave critical) ( enter critical) ] {
} ;
\end{
scope}
\end{
tikzpicture}
\end{
document}
簡単な木を描く
より一般的に使用されるのは、 \node {}
ルート ノードの作成に使用され、 子ノードの作成 に使用されます。 child {node{}}
\documentclass{
article}
\usepackage{
tikz}
\usetikzlibrary {
arrows. meta, backgrounds, fit, positioning}
\begin{
document}
\begin{
tikzpicture}
\node {
Root}
child {
node{
A}
child {
node{
B} }
child {
node{
C} }
}
child {
node{
D}
child {
node{
E} }
}
;
\end{
tikzpicture}
\end{
document}