ノードの形状

主に3種類の形状があります:ポリゴンベースレコードベース、そしてユーザ定義

レコードベースの形状は、主にHTMLライクなラベルによって置き換えられ、大幅に一般化されました。つまり、`shape=record`を使用する代わりに、`shape=none`、`margin=0`、そしてHTMLライクなラベルを使用することを検討できます。

すべてのノード形状のジオメトリとスタイルは、ノード属性`fixedsize``fontname``fontsize``height``label``style`、そして`width`によって影響を受けます。

ポリゴンベースのノード

可能なポリゴンベースの形状を以下に示します。

box
polygon
ellipse
oval
circle
point
egg
triangle
plaintext
plain
diamond
trapezium
parallelogram
house
pentagon
hexagon
septagon
octagon
doublecircle
doubleoctagon
tripleoctagon
invtriangle
invtrapezium
invhouse
Mdiamond
Msquare
Mcircle
rect
rectangle
square
star
none
underline
cylinder
note
tab
folder
box3d
component
promoter
cds
terminator
utr
primersite
restrictionsite
fivepoverhang
threepoverhang
noverhang
assembly
signature
insulator
ribosite
rnastab
proteasesite
proteinstab
rpromoter
rarrow
larrow
lpromoter

図に示されているように、形状`rect`と`rectangle`は`box`の同義語であり、`none`は`plaintext`の同義語です。形状`plain`はこれら2つと似ていますが、`width=0 height=0 margin=0`も強制するため、ノードの実際のサイズはラベルによって完全に決定されます。これは、例えばHTMLライクなラベルを使用する場合に便利です。また、他の形状とは異なり、`style=filled`なしでこれら3つの形状と`underline`を示しており、通常の使用方法を示しています。塗りつぶしをオンにすると、ラベルテキストは塗りつぶされた長方形に表示されます。

ポリゴンベースの形状のジオメトリは、ノード属性`regular``peripheries`、そして`orientation`によっても影響を受けます。`shape="polygon"`の場合、属性`sides``skew`、そして`distortion`も使用されます。設定されていない場合、それぞれデフォルトで4、0.0、0.0になります。点の形状は特殊で、`peripheries``width`、そして`height`属性のみによって影響を受けます。

通常、ノードのサイズは、ラベルと画像(存在する場合)を含むために必要な最小の幅と高さで、`margin`属性で指定されたマージンを含めて決定されます。幅と高さは、これらのパラメータの最小値を指定する`width``height`属性で指定されたサイズ以上である必要があります。ノードサイズを制限する方法については、`fixedsize`属性を参照してください。特に、`fixedsize=shape`の場合、ノードの形状は`width``height`属性によって固定され、形状はエッジの終端に使用されますが、形状とラベルの両方のサイズが使用され、ノードの重なりを防ぎます。例えば、以下のグラフ

digraph G {
  { 
    node [margin=0 fontcolor=blue fontsize=32 width=0.5 shape=circle style=filled]
    b [fillcolor=yellow fixedsize=true label="a very long label"]
    d [fixedsize=shape label="an even longer label"]
  }
  a -> {c d}
  b -> {c d}
}

は、以下の図になります。

`fixedsize=true`の黄色のノードのラベルは、`fixedsize=shape`の灰色のノードには十分なスペースがあるのに対し、他のノードと重なっていることに注意してください。

形状:`note`、`tab`、`folder`、`box3d`、そして`component`はPanderによって提供されました。合成生物学の形状:`promoter`、`cds`、`terminator`、`utr`、`primersite`、`restrictionsite`、`fivepoverhang`、`threepoverhang`、`noverhang`、`assembly`、`signature`、`insulator`、`ribosite`、`rnastab`、`proteasesite`、`proteinstab`、`rpromoter`、`rarrow`、`larrow`、そして`lpromoter`はJenny Chengによって提供されました。

レコードベースのノード

注意:レコードベースのノードに関する注意を参照してください。また、一方または両方のノードがレコード形状を持つ場合、同じランクにある隣接ノード間の非自明なエッジ(ポートまたはラベルを持つエッジ)を使用すると問題が発生することに注意してください。

これらは、「record」と「Mrecord」の形状値によって指定されます。レコードベースのノードの構造は、次のスキーマを持つ`label`によって決定されます。

rlabel = field ( '|' field )*
ここで、field = fieldId または '{' rlabel '}'
そして、fieldId = [ '<' string '>'] [ string ]

中括弧、縦棒、そして山括弧は、リテラル文字として表示したい場合は、バックスラッシュ文字でエスケープする必要があります。スペースはトークン間のセパレータとして解釈されるため、テキストにスペースが必要な場合はエスケープする必要があります。

fieldId の最初の文字列はフィールドにポート名を割り当て、ノード名と組み合わせてエッジをノードに接続する場所を示すために使用できます。(portPosを参照してください。) 2番目の文字列はフィールドのテキストとして使用され、通常のエスケープシーケンス `\n`、`\l`、`\r`をサポートしています。

視覚的には、レコードはボックスであり、フィールドは水平または垂直のサブボックスが交互に並ぶ行で表されます。Mrecordシェイプはレコードシェイプと同一ですが、最外側のボックスの角が丸くなっています。水平レイアウトと垂直レイアウトの切り替えは、フィールドを中括弧「{...}」で入れ子にすることで行われます。レコードの最上位の向きは水平です。したがって、「A | B | C | D」というラベルのレコードは、4つのフィールドが左から右に配置されますが、「{A | B | C | D}」では上から下に配置され、「A | { B | C } | D」では「B」の上に「C」が、「A」が「B」と「C」の左に、「D」が「B」と「C」の右に配置されます。

レコードノードの初期の向きは、rankdir属性によって異なります。この属性が垂直レイアウトに対応する`TB`(デフォルト)または`BT`の場合、レコードの最上位のフィールドは水平に表示されます。しかし、この属性が水平レイアウトに対応する`LR`または`RL`の場合、最上位のフィールドは垂直に表示されます。

レコードノードの例として、ドット入力

digraph structs {
    node [shape=record];
    struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"];
    struct2 [label="<f0> one|<f1> two"];
    struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
    struct1:f1 -> struct2:f0;
    struct1:f2 -> struct3:here;
}

は、以下の図になります。

以下の行を追加すると

    rankdir=LR

以下のレイアウトになります。

ノード`struct1`のシェイプを`Mrecord`に変更すると、以下のようになります。

ノードのスタイル

style属性を使用して、ノードの外観を変更できます。現在、認識されているスタイルの値は8つあります。`filled`、`invisible`、`diagonals`、`rounded`、`dashed`、`dotted`、`solid`、`bold`です。style属性の値は、通常どおり、これらのいずれかのコンマ区切りのリストにすることができます。スタイルに競合が含まれる場合(例:`style="dotted, solid"`)、最後の属性が優先されます。

filled
この値は、ノードの内側を塗りつぶす必要があることを示します。使用される色はノードのfillcolor、またはそれが定義されていない場合はcolorです。塗りつぶされていないノードの場合、ノードの内側は、現在のグラフまたはクラスタの背景色に対して透明になります。`point`シェイプは常に塗りつぶされることに注意してください。

したがって、以下のコードは

digraph G {
  rankdir=LR
  node [shape=box, color=blue]
  node1 [style=filled] 
  node2 [style=filled, fillcolor=red] 
  node0 -> node1 -> node2
}

は、以下の図になります。

invisible
このスタイルを設定すると、ノードはまったく表示されなくなります。ノードはグラフのレイアウトには引き続き使用されることに注意してください。
diagonals
diagonalsスタイルでは、ノードのポリゴンの頂点の近くに小さな弦が描画されます。円や楕円の場合は、シェイプの上部と下部の近くに2つの弦が描画されます。MsquareMcircleMdiamondという特別なノードシェイプは、単にdiagonalsスタイルが設定された通常の正方形、円、菱形です。
rounded
roundedスタイルでは、多角形の角が滑らかになります。このスタイルはレコードベースのノードにも適用されることに注意してください。実際、Mrecordシェイプは、このスタイルを設定するための単なる省略形です。また、2005年4月26日以前は、roundedスタイルとfilledスタイルは互いに排他的でした。

丸みの例として、dotは次のグラフを使用します。

digraph R {
  rankdir=LR
  node [style=rounded]
  node1 [shape=box]
  node2 [fillcolor=yellow, style="rounded,filled", shape=diamond]
  node3 [shape=record, label="{ a | b | c }"]

  node1 -> node2 -> node3
}

そして、以下の図を生成します。

dashed
このスタイルでは、ノードの境界線が破線で描画されます。
dotted
このスタイルでは、ノードの境界線が点線で描画されます。
solid
このスタイルでは、ノードの境界線が実線で描画されます。これはデフォルトです。
bold
このスタイルでは、ノードの境界線が太線で描画されます。penwidthも参照してください。

特定のコードジェネレータでは、追加のスタイルが使用できる場合があります。

HTMLライクなラベル

注記: この機能は、2003年11月中旬以降のバージョンのGraphvizでのみ使用できます。特に、リリース1.10には含まれていません。

注記: 太字、イタリック体、下線、下付き文字、上付き文字のフォントマークアップ(<B><I><U><SUB><SUP>)は、2011年10月14日以降のバージョンでのみ使用できます。また、取り消し線のマークアップ(<S>)には、2013年9月15日以降のバージョンが必要です。さらに、これらのマークアップは現在、cairoレンダラーとsvgレンダラーでのみ使用できます。水平線と垂直線(<HR><VR>)は、2011年7月8日以降のバージョンでのみ使用できます。

注記: 2014年9月9日以降のリリースでは、shape=plainを使用することで、ノードのサイズがラベルによって完全に決定されます。それ以外の場合は、ノードのマージン、幅、高さの値によってノードが大きくなり、エッジがラベルから切り取られる可能性があります。実際、shape=plainshape=none width=0 height=0 margin=0の省略形です。

ラベル属性の値(ノード、エッジ、クラスタ、グラフのlabel、およびエッジのheadlabeltaillabel属性)がHTML文字列、つまり<...>で区切られていて"..."ではない場合、ラベルはHTML記述として解釈されます。最も単純な例では、そのようなラベルは、通常の文字列ラベルによって提供されるように、さまざまな配置の複数行のテキストを記述できます。より一般的には、ラベルはHTMLによって提供されるものと同様のテーブルを指定でき、各レベルで異なるグラフィック属性を使用できます。

HTML文字列はHTML入力として処理されるため、リテラルテキストまたは属性値内の`"`, `&`, `<`, `>`文字を使用する場合は、対応するエスケープシーケンスに置き換える必要があります。たとえば、`href`値に`&`を使用する場合は、`&`として表す必要があります。

注記: これらのラベルによってサポートされる機能と構文はHTMLをモデルにしていますが、Graphvizラベルに関連する多くの側面はHTMLにはなく、逆にHTMLではGraphvizでは意味のないさまざまな構成が許可されています。一般的に、これらを「HTMLラベル」と呼びますが、「HTMLのようなラベル」という面倒な呼び方ではなく、「HTMLラベル」と呼びますが、これらが真のHTMLではないことを読者にご注意ください。以下の文法は、Graphvizが受け入れるものを正確に記述しています。

HTMLラベルは厳密にはシェイプではありませんが、上記で説明したレコードシェイプの一般化と見なすことができます。特に、ノードがshape属性をnoneまたはplaintextに設定している場合、HTMLラベルがノードのシェイプになります。一方、ノードが他のシェイプ(pointを除く)を持っている場合、HTMLラベルは通常のラベルと同じようにノード内に埋め込まれます。レコードベースのシェイプ(recordとMrecord)へのHTMLラベルの追加は推奨されず、ラベルスキーマと機能が競合するため、予期しない動作につながる可能性があります。

以下は、HTMLラベルの抽象的な文法です。要素に対応する終端記号は太字で、非終端記号はイタリック体で示されています。角括弧`[`と`]`はオプションの項目を囲み、縦棒`|`は選択肢を区切ります。HTMLと同様に、要素名と属性名は、大文字と小文字を区別しません。(HTML 4.01仕様の3.2.1項と3.2.2項を参照してください)。

label : text
| fonttable
text : textitem
| text textitem
textitem : string
| <BR/>
| <FONT> text </FONT>
| <I> text </I>
| <B> text </B>
| <U> text </U>
| <O> text </O>
| <SUB> text </SUB>
| <SUP> text </SUP>
| <S> text </S>
fonttable : table
| <FONT> table </FONT>
| <I> table </I>
| <B> table </B>
| <U> table </U>
| <O> table </O>
table : <TABLE> rows </TABLE>
rows : row
| rows row
| rows <HR/> row
row : <TR> cells </TR>
cells : cell
| cells cell
| cells <VR/> cell
cell : <TD> label </TD>
| <TD> <IMG/> </TD>

タブや改行などの非印刷文字は無視されます。上記では、文字列は、スペースを含む印刷可能な文字の任意のコレクションです。テーブルでは、<TD>要素の本文以外では、スペースを含む空白文字は無視されます。<TD>要素内では、スペースは保持されますが、その他のすべての空白文字は破棄されます。注記: 技術的な理由により、テーブルが<FONT><B>などのフォント要素でラップされている場合、その直前または直後のスペースは構文エラーの原因となります。たとえば、以下のラベルは

< <U><TABLE><TR><TD>a</TD></TR></TABLE></U>>

不正です。スペースまたは<U>...</U>のいずれかを削除すると、これが修正されます。

HTMLコメントはHTML文字列内で許可されています。HTML要素の一部が含まれている場合、その要素全体を含んでいる限り、どこにでも配置できます。

上記の記述から明らかなように、空白文字の解釈は、HTML風のラベルが標準HTMLと大きく異なる点の1つです。HTMLでは、任意の空白文字のシーケンスは単一のスペースに縮約されます。ユーザーがこれを望まない場合は、入力でノンブレーキングスペース&nbsp;を使用する必要があります。これは、テキストレイアウトが利用可能なスペースに応じて動的に変化するHTMLにおいては理にかなっています。Graphvizでは、レイアウトは入力によって静的に決定されるため、通常のスペース文字をノンブレーキングとして扱うのは合理的です。さらに、タブと改行を無視することで、入力テキストを読みやすくフォーマットできます。

各HTML要素には、一連のオプション属性があります。属性値は二重引用符で囲む必要があります。

テーブル要素
<TABLE
  ALIGN="CENTER|LEFT|RIGHT"
  BGCOLOR="color"
  BORDER="value"
  CELLBORDER="value"
  CELLPADDING="value"
  CELLSPACING="value"
  COLOR="color"
  COLUMNS="value"
  FIXEDSIZE="FALSE|TRUE"
  GRADIENTANGLE="value"
  HEIGHT="value"
  HREF="value"
  ID="value"
  PORT="portName"
  ROWS="value"
  SIDES="value"
  STYLE="value"
  TARGET="value"
  TITLE="value"
  TOOLTIP="value"
  VALIGN="MIDDLE|BOTTOM|TOP"
  WIDTH="value"
>
テーブル行
<TR
  <!-- No attributes -->
>
テーブルセル
<TD
  ALIGN="CENTER|LEFT|RIGHT|TEXT"
  BALIGN="CENTER|LEFT|RIGHT"
  BGCOLOR="color"
  BORDER="value"
  CELLPADDING="value"
  CELLSPACING="value"
  COLOR="color"
  COLSPAN="value"
  FIXEDSIZE="FALSE|TRUE"
  GRADIENTANGLE="value"
  HEIGHT="value"
  HREF="value"
  ID="value"
  PORT="portName"
  ROWSPAN="value"
  SIDES="value"
  STYLE="value"
  TARGET="value"
  TITLE="value"
  TOOLTIP="value"
  VALIGN="MIDDLE|BOTTOM|TOP"
  WIDTH="value"
>
フォント指定
<FONT
  COLOR="color"
  FACE="fontname"
  POINT-SIZE="value"
>
改行
<BR
  ALIGN="CENTER|LEFT|RIGHT"
/>
画像の挿入
<IMG
  SCALE="FALSE|TRUE|WIDTH|HEIGHT|BOTH"
  SRC="value"
/>
イタリック体
<I
  <!-- No attributes -->
>
ボールド体
<B
  <!-- No attributes -->
>
下線付きテキスト
<U
  <!-- No attributes -->
>
上線付きテキスト
<O
  <!-- No attributes -->
>
下付き文字
<SUB
  <!-- No attributes -->
>
上付き文字
<SUP
  <!-- No attributes -->
>
取り消し線付きテキスト
<S
  <!-- No attributes -->
>
水平線
<HR
  <!-- No attributes -->
/>
垂直線
<VR
  <!-- No attributes -->
/>
ALIGN
水平方向の位置を指定します。オブジェクトに必要以上のスペースが割り当てられた場合、この値によって余分なスペースがオブジェクトの左右どちらに配置されるかが決まります。
  • CENTER はオブジェクトを中央揃えします。(デフォルト)
  • LEFT はオブジェクトを左揃えします。
  • RIGHT はオブジェクトを右揃えします。
  • (<TD> のみ) TEXT は、セルの幅全体を使用してテキスト行を揃えます。行の揃え方は、それに関連付けられた(暗黙的な場合もある)<BR> 要素によって決定されます。

セルの内容は通常ブロックとして揃えられます。具体的には、テキスト行はまず、最も長い行の幅と対応する<BR>要素に基づいてテキストブロックとして揃えられます。次に、テキストブロック全体がセル内で揃えられます。ただし、セルのALIGN値がTEXTであり、セルにテキストが含まれている場合は、セルの使用可能な幅全体を使用して行がジャスティファイされます。セルにテキストが含まれていない場合は、含まれる画像またはテーブルが中央揃えされます。

BALIGN
セルに含まれる<BR>要素のデフォルトの揃え方を指定します。<BR>要素に明示的なALIGN属性がない場合、属性値はBALIGNの値によって指定されます。
BGCOLOR="color"
背景の色を設定します。この色は、子要素のBGCOLOR属性によって上書きできます。値は単色、またはコロンで区切られた2色にすることができ、後者はグラデーション塗りつぶしを示します。
BORDER="value"
オブジェクトの周りのボーダーの幅をポイントで指定します。値がゼロの場合はボーダーがありません。デフォルトは1です。最大値は255です。テーブルで設定され、CELLBORDERが設定されていない場合、この値はテーブルのすべてのセルにも使用されます。セル内のBORDER属性によって上書きできます。
CELLBORDER="value"
テーブル内のすべてのセルのボーダーの幅を指定します。BORDERタグで上書きできます。最大値は127です。
CELLPADDING="value"
セルのボーダーとそのコンテンツ間のスペースをポイントで指定します。デフォルトは2です。最大値は255です。
CELLSPACING="value"
テーブル内のセル間、およびセルとテーブルのボーダー間のスペースをポイントで指定します。デフォルトは2です。最大値は127です。
COLOR="color"
<FONT>...</FONT>の範囲内のフォントの色、または<TABLE>...</TABLE>、または<TD>...</TD>の範囲内のテーブルまたはセルのボーダーの色を設定します。この色は、子要素のCOLOR属性によって上書きできます。デフォルトでは、フォントの色は対応するノード、エッジ、またはグラフのfontcolor属性によって決定され、ボーダーの色は対応するノード、エッジ、またはグラフのcolor属性によって決定されます。
COLSPAN="value"
セルが跨る列数を指定します。デフォルトは1です。最大値は65535です。
COLUMNS="value"
列に関する一般的な書式情報を提供します。現時点では、唯一の有効な値は*であり、これにより、すべての行のすべてのセルの間に垂直線が描画されます。
FACE="fontname"
<FONT>...</FONT>の範囲内で使用するフォントを指定します。これは、子要素のFACE属性によって上書きできます。デフォルトでは、フォント名は対応するノード、エッジ、またはグラフのfontname属性によって決定されます。
FIXEDSIZE
WIDTHおよびHEIGHT属性によって与えられた値が適用されるかどうかを指定します。
  • FALSE は、すべてのコンテンツが収まるようにオブジェクトを拡大することを許可します。(デフォルト)
  • TRUE は、オブジェクトのサイズを指定されたWIDTHおよびHEIGHTに固定します。これらの属性の両方を指定する必要があります。
GRADIENTANGLE="value"
BGCOLORが色のリストである場合、グラデーション塗りつぶしで使用される角度を指定します。デフォルトの線形グラデーションでは、これは色が変化する中心を通る線の角度を指定します。したがって、角度0は左右の進行になります。放射状グラデーション(STYLEを参照)では、角度は着色の中心の位置を指定します。角度0は中心をテーブルまたはセルの中心に配置し、ゼロ以外の角度は境界付近のその角度に沿って塗りつぶしの中心を配置します。
HEIGHT="value"
オブジェクトの最小の高さをポイントで指定します。高さには、コンテンツ、スペース、ボーダーが含まれます。FIXEDSIZEがtrueでない限り、コンテンツが収まるように高さが拡張されます。最大値は65535です。
HREF="value"
オブジェクトにURLを添付します。"value"URL属性と同様にescStringとして扱われます。
ID="value"
テーブルまたはセルの一意のIDを指定できます。id属性の詳細については、そちらを参照してください。"value"id属性と同様にescStringとして扱われます。
POINT-SIZE="value"
<FONT>...</FONT>の範囲内で使用されるフォントのサイズをポイントで設定します。これは、子要素のPOINT-SIZE属性によって上書きできます。デフォルトでは、フォントサイズは対応するノード、エッジ、またはグラフのfontsize属性によって決定されます。
PORT="value"
ポート名をオブジェクトに添付します。(portPosを参照)これは、エッジのヘッドまたはテールを変更して、端がオブジェクトに直接接続するように使用できます。
ROWS="value"
行に関する一般的な書式情報を提供します。現時点では、唯一の有効な値は*であり、これにより、すべての行の間に水平線が描画されます。
ROWSPAN="value"
セルが跨る行数を指定します。デフォルトは1です。最大値は65535です。
SCALE
画像がセルで使用可能な余分なスペースをどのように使用するのかを指定します。許可される値は次のとおりです。
  • FALSE:画像を自然なサイズのままにします。(デフォルト)
  • TRUE:画像を均一に拡大縮小して適合させます。
  • WIDTH:画像の幅を拡張して塗りつぶします
  • HEIGHT:画像の高さを拡張して塗りつぶします
  • BOTH:画像の幅と高さを両方とも拡張して塗りつぶします。この属性が未定義の場合、画像は描画されているグラフオブジェクトのimagescale属性を継承します。imagescale属性と同様に、セルが固定サイズで画像が大きすぎる場合、問題のある寸法はスペースに収まるように縮小され、SCALE="true"の場合は幅と高さで均一にスケーリングされます。セルに含まれるALIGNVALIGN属性は、画像のSCALE属性を上書きすることに注意してください。
SIDES="value"
ボーダーが描画されている場合、セルまたはテーブルのボーダーのどの辺を描画するのかを指定します。デフォルトでは、すべての辺が描画されます。"value"文字列には、ボーダーの左、上、右、下の辺に対応する(大文字と小文字を区別しない)文字'L''T''R'、または'B'の任意の組み合わせを含めることができます。たとえば、SIDES="LB"は、ボーダーの左と下のセグメントのみを描画することを示します。
SRC="value"
セルに表示する画像ファイルを指定します。ソフトウェアがWebサーバーとして使用される場合、画像へのファイルシステムアクセスはより制限されます。SERVER_NAMEを参照してください。
STYLE
テーブルまたはセルのスタイル特性を指定します。スタイル特性は、コンマまたはスペースで区切られたスタイル属性のリストとして指定されます。現時点では、テーブルに対してROUNDEDRADIAL、セルに対してRADIALが唯一の有効な属性です。ROUNDEDが指定されている場合、テーブルは丸みを帯びた角になります。これは、最も外側のセルにボーダーがない場合、またはCELLSPACINGが十分に大きい場合に最適です。セルの周りにボーダーを付ける必要がある場合は、HRVR要素、またはTABLECOLUMNSROWS属性を使用します。

RADIAL属性は、放射状グラデーション塗りつぶしを示します。BGCOLORおよびGRADIENTANGLE属性を参照してください。

TARGET="value"
オブジェクトにURLがある場合、ブラウザのどのウィンドウがURLに使用されるかを決定します。W3Cドキュメントを参照してください。"value"target属性と同様にescStringとして扱われます。
TITLE="value"
要素に添付されるツールチップ注釈を設定します。これは、要素にHREF属性がある場合にのみ使用されます。"value"tooltip属性と同様にescStringとして扱われます。
TOOLTIP="value"
TITLEの別名です。
VALIGN
垂直方向の位置を指定します。オブジェクトに必要以上のスペースが割り当てられた場合、この値によって余分なスペースがオブジェクトの上下にどちらに配置されるかが決まります。
  • MIDDLE はオブジェクトを中央揃えします。(デフォルト)
  • BOTTOM はオブジェクトを下揃えします。
  • TOP はオブジェクトを上揃えします。
WIDTH="value"
オブジェクトの最小幅をポイント単位で指定します。幅には、コンテンツ、スペース、ボーダーが含まれます。FIXEDSIZEがtrueでない限り、コンテンツが収まるように幅は拡大されます。最大値は65535です。

属性間には継承があります。テーブルがCELLPADDINGCELLBORDER、またはBORDERの値を指定する場合、上書きされない限り、この値はテーブルのセルで使用されます。セルまたはテーブルがBGCOLORを指定する場合、これがそのすべての子要素の背景色になります。もちろん、ラベルを所有するグラフオブジェクトに対して背景色または塗りつぶし色が指定されている場合、これがラベルの元の背景色になります。オブジェクトのfontname、fontcolor、fontsize属性は、テキスト描画のデフォルトです。FONTを使用して新しい値を設定することで、これらを上書きできます。新しいフォントの値は、囲まれたFONT要素によって上書きされるまで保持されます。最後に、グラフオブジェクトのpencolorまたはcolorがボーダーの色として使用されます。

テーブル内で均一に水平または垂直のルールを使用したい場合は、多数のHRおよびVR要素を使用するのではなく、COLUMNSまたはROWS属性の使用を検討してください。

デバイス非依存の方法でテーブルを処理する際の特定の制限により、BORDERが1で、テーブルとセルの両方のボーダーがオンになっており、CELLSPACINGが2未満の場合、出力に異常が発生する可能性があります(隣接するはずのボーダーの側面間に隙間が生じる、または共線になるなど)。通常、ユーザーはボーダーサイズまたはスペースを増やすか、テーブルボーダーをオフにすることで、この問題を回避できます。

HTMLライクなラベルの例

レコード例の作成

ドット入力

digraph structs {
    node [shape=plaintext]
    struct1 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
  <TR><TD>left</TD><TD PORT="f1">mid dle</TD><TD PORT="f2">right</TD></TR>
</TABLE>>];
    struct2 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
  <TR><TD PORT="f0">one</TD><TD>two</TD></TR>
</TABLE>>];
    struct3 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
  <TR>
    <TD ROWSPAN="3">hello<BR/>world</TD>
    <TD COLSPAN="3">b</TD>
    <TD ROWSPAN="3">g</TD>
    <TD ROWSPAN="3">h</TD>
  </TR>
  <TR>
    <TD>c</TD><TD PORT="here">d</TD><TD>e</TD>
  </TR>
  <TR>
    <TD COLSPAN="3">f</TD>
  </TR>
</TABLE>>];
    struct1:f1 -> struct2:f0;
    struct1:f2 -> struct3:here;
}

上記のレコード例に相当するHTMLを出力します。

通常どおり、HTML仕様はより冗長です。

より複雑な例

一方、HTMLラベルははるかに汎用的です

digraph G {
  rankdir=LR
  node [shape=plaintext]
  a [
     label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
  <TR><TD ROWSPAN="3" BGCOLOR="yellow">class</TD></TR>
  <TR><TD PORT="here" BGCOLOR="lightblue">qualifier</TD></TR>
</TABLE>>
  ]
  b [shape=ellipse style=filled
     label=<
<TABLE BGCOLOR="bisque">
  <TR>
      <TD COLSPAN="3">elephant</TD> 
      <TD ROWSPAN="2" BGCOLOR="chartreuse" 
          VALIGN="bottom" ALIGN="right">two</TD>
  </TR>
  <TR>
    <TD COLSPAN="2" ROWSPAN="2">
      <TABLE BGCOLOR="grey">
        <TR><TD>corn</TD></TR> 
        <TR><TD BGCOLOR="yellow">c</TD></TR> 
        <TR><TD>f</TD></TR> 
      </TABLE>
    </TD>
    <TD BGCOLOR="white">penguin</TD> 
  </TR> 
  <TR>
    <TD COLSPAN="2" BORDER="4" ALIGN="right" PORT="there">4</TD>
  </TR>
</TABLE>>
  ]
  c [ 
  label=<long line 1<BR/>line 2<BR ALIGN="LEFT"/>line 3<BR ALIGN="RIGHT"/>>
  ]

  subgraph { rank=same b c }
  a:here -> b:there [dir=both arrowtail=diamond]
  c -> b
  d [shape=triangle]
  d -> c [label=<
<TABLE>
  <TR>
    <TD BGCOLOR="red" WIDTH="10"> </TD>
    <TD>Edge labels<BR/>also</TD>
    <TD BGCOLOR="blue" WIDTH="10"> </TD>
  </TR>
</TABLE>>
  ]
}

出力結果

フォントの例

<FONT>要素を使用した例

digraph structs {
    node [shape=plaintext];

    struct1 [label=<<TABLE>
			<TR>
        <TD>line 1</TD>
        <TD BGCOLOR="blue"><FONT COLOR="white">line2</FONT></TD>
        <TD BGCOLOR="gray"><FONT POINT-SIZE="24.0">line3</FONT></TD>
        <TD BGCOLOR="yellow"><FONT POINT-SIZE="24.0" FACE="ambrosia">line4</FONT></TD>
        <TD>
          <TABLE CELLPADDING="0" BORDER="0" CELLSPACING="0">
						<TR>
							<TD><FONT COLOR="green">Mixed</FONT></TD>
							<TD><FONT COLOR="red">fonts</FONT></TD>
						</TR>
          </TABLE>
        </TD>
      </TR>
    </TABLE>>];
}

出力結果

画像の例

<IMG>要素の使用

digraph structs {
    node [shape=plaintext];

    struct1 [label=<<TABLE>
      <TR><TD><IMG SRC="eqn.png"/></TD></TR>
      <TR><TD>caption</TD></TR>
    </TABLE>>];
}

出力結果

辺の例

sides属性(バージョン2.37以降)を使用すると、セルを組み合わせてさまざまな非凸形状を作成できます。たとえば、tee-shapedノード

digraph {
  tee [shape=none margin=0 label=
    <<table border="0" cellspacing="0" cellborder="1">
     <tr>
      <td width="9" height="9" fixedsize="true" style="invis"></td>
      <td width="9" height="9" fixedsize="true" sides="ltr"></td>
      <td width="9" height="9" fixedsize="true" style="invis"></td>
     </tr>
     <tr>
      <td width="9" height="9" fixedsize="true" sides="tlb"></td>
      <td width="9" height="9" fixedsize="true" sides="b"></td>
      <td width="9" height="9" fixedsize="true" sides="brt"></td>
     </tr>
    </table>>]
}

出力結果

ユーザ定義のノード形状

ユーザーが指定する3番目のノード形状があります。通常、これらの形状は具体的なグラフィック形式の詳細に依存します。現在、形状は、PostScript出力で使用するファイルまたはアドオンライブラリを介したPostScriptを使用して記述するか、SVGまたはビットマップ(jpeg、gifなど)出力で使用するビットマップイメージファイルによって指定できます。詳細については、カスタム形状の作成方法ページを参照してください。

PostScriptのためのSDL形状

ユーザー定義のノード形状の一例として、CSRのMark Risonが提供するSDL形状があります。これらは、外部PostScriptプロシージャで説明されている使用方法を持つPostScript関数として提供されます。必要なPostScriptライブラリファイルとサンプル使用法は、リリースのcontrib/sdlshapesディレクトリにあります。ライブラリファイルsdl.psに含まれる著作権と許諾に関する通知に注意してください。

以下の表は、形状名と対応するノード形状を示しています。