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
}


生成された画像のサイズは、横1インチ×縦2インチくらいでした。

(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"」と指定するのと同じ結果になります。