Graphvizの出力サイズ指定 (1)
Graphvizの出力サイズ指定に関する説明です。2回の記事に分ける予定です。動作確認に使用したバージョンは、2.26.3(最新の安定版)です。(次回: id:simply-k:20100805:1281037300)
基本事項
グラフの出力サイズを変更する場合は、graphに対して以下のような属性を指定します。*1
size属性とpage属性では、インチ単位でサイズを指定します。(1インチは、約2.54cmです。)
(1)サイズ指定なし
サイズ指定なしの場合です。ここでは明示的に「size=""」としていますが、書かなくても構いません。
digraph G { graph [size=""] node [fontname="Arial"] Size -> Test }
(2)最大サイズ指定 (縮小されない)
size属性を指定します。size属性は、通常は最大サイズ指定です。サイズ指定なしの場合に横1インチ×縦2インチ程度だったため、これを確実に超えるサイズとして、横2.0インチ×縦4.0インチを指定します。
digraph G { graph [size="2.0,4.0"] node [fontname="Arial"] Size -> Test }
(1)と同じ出力サイズとなりました。グラフのサイズが指定した最大サイズを超えない場合、size属性を指定しない場合と同じ出力サイズになります。
(3)最大サイズ指定 (縮小される)
size属性を指定します。サイズ指定なしの場合に横1インチ×縦2インチ程度だったため、これが確実に収まらないサイズとして、横0.5インチ×縦1.0インチを指定します。
digraph G { graph [size="0.5,1.0"] node [fontname="Arial"] Size -> Test }
グラフは指定サイズ(横0.5インチ×縦1.0インチ)に合わせて縮小されました。グラフのサイズが指定した最大サイズを超える場合、グラフの画像は、指定サイズに収まるように縮小されます。(一般的に、出力サイズと指定サイズは一致しません。「注意点」を参照してください。)
(4)サイズ指定 (拡大)
size属性を感嘆符(!)付きで指定します。size属性の最後に感嘆符(!)を付けると、出力サイズを指定できます。サイズ指定なしの場合に横1インチ×縦2インチ程度だったため、これを確実に超えるサイズとして、横2.0インチ×縦4.0インチを指定します。
digraph G { graph [size="2.0,4.0!"] node [fontname="Arial"] Size -> Test }
グラフは指定サイズ(横2.0インチ×縦4.0インチ)に合わせて拡大されました。(一般的に、出力サイズと指定サイズは一致しません。「注意点」を参照してください。)
(5)サイズ指定 (縮小)
size属性を感嘆符(!)付きで指定します。サイズ指定なしの場合に横1インチ×縦2インチ程度だったため、これが確実に収まらないサイズとして、横0.5インチ×縦1.0インチを指定します。
digraph G { graph [size="0.5,1.0!"] node [fontname="Arial"] Size -> Test }
グラフは指定サイズ(横0.5インチ×縦1.0インチ)に合わせて縮小されました。(一般的に、出力サイズと指定サイズは一致しません。「注意点」を参照してください。)
注意点
グラフが拡大・縮小される場合、縦横比を保持したまま、指定サイズにちょうど収まるようなサイズに変換されます。このため、必ずしも指定サイズと出力サイズは一致しません。例えば、次のようなケースが考えられます。
- サイズ指定なしで「横1.0インチ×縦2.0インチ」のグラフに対し、「size="0.5,2.0"」を指定した場合
「横:縦=1:2」を保持したまま「横0.5インチ×縦2.0インチ」に収まるように縮小されるため、出力サイズは「横0.5インチ×縦1.0インチ」になる。 - サイズ指定なしで「横1.0インチ×縦2.0インチ」のグラフに対し、「size="4.0,3.0!"」を指定した場合
「横:縦=1:2」を保持したまま「横4.0インチ×縦3.0インチ」に収まるように拡大されるため、出力サイズは「横1.5インチ×縦3.0インチ」になる。
今回のまとめ
- 最大サイズを指定したい場合は、graphの属性で「size="x,y"」を指定する。*2 *3
- グラフが最大サイズに満たない場合は、サイズ指定なしの場合と同じ結果になる。
- グラフが最大サイズを超える場合は、グラフが指定したサイズにちょうど収まるように縮小される。
- サイズを指定したい場合は、graphの属性で「size="x,y!"」を指定する。(最後に「!」を付ける)
- グラフが指定サイズに満たない場合は、グラフが指定したサイズにちょうど収まるように拡大される。
- グラフが指定サイズを超える場合は、グラフが指定したサイズにちょうど収まるように縮小される。
- サイズの拡大・縮小では、縦横比が保持される。このため、指定サイズと出力サイズは必ずしも一致しない。
次回はpage属性を使ったサイズ指定について説明します。(次回: id:simply-k:20100805:1281037300)
*1:他にも、縦横比を指定するratio属性がありますが、この記事では省略します。([http://www.graphviz.org/doc/info/attrs.html#d:ratio)
*2:xとyは、整数または小数です。
*3:「size="x"」の形式で指定すると、「size="x,x"」と指定するのと同じ結果になります。