

### 前提

  * 日毎にノード及びエッジが追加される
  * エッジがつかないノードもある（後日，エッジがつく可能性もある）

### 目的

  * display(G)で表示される図をpng等の画像ファイルに保存したい
  * エッジがないノードを最後に一括削除したい

### コード

[code]

    !pip install graphviz
    
[/code]

[code]

    from graphviz import Digraph
    
    G = Digraph(format="png")
    G.attr("node", fontname="Meiryo UI",fontsize='9',shape="circle")
    G.attr(overlap='false',splines='true')
    
    #クラスターの作成
    with G.subgraph(name='cluster_root')as c:
    c.attr(color='white',label='2022年')
    
    #2022-01-06
    with c.subgraph(name='cluster01-06')as c0106:
    c0106.attr(color='red',label='01-06')
    for node0106 in range(1092,1103):
    c0106.node(str(node0106))
    
    #2022-01-07
    with c.subgraph(name='cluster01-07')as c0107:
    c0107.attr(color='blue',label='01-07')
    for node0107 in range(1103,1134):
    c0107.node(str(node0107))
    
    c0107edges=[(1103,1104),(1103,1105),(1103,1106),(1092,1119),(1092,1120),
    (1092,1121),(1092,1122),(1092,1124),(1099,1124),(1101,1125),
    (1101,1126),(1102,1127)]
    for i,j in c0107edges:
    c0107.edge(str(i),str(j),color="#00000080")
    
    #2022-01-08
    with c.subgraph(name='cluster01-08')as c0108:
    c0108.attr(color='yellow',label='01-08')
    for node0108 in range(1134,1184):
    c0108.node(str(node0108))
    
    c0108edges=[(1139,1140),(1139,1141),(1148,1149),(1113,1151),(1110,1152),
    (1088,1153),(1117,1154),(1107,1155),
    (1103,1157),(1103,1158),(1103,1159),(1103,1160),(1103,1161),
    (1103,1162),(1103,1163),(1103,1164),(1103,1165),
    (1118,1166),(1118,1167),(1123,1168),(1115,1169),(1128,1170),
    (1128,1171),
    (1117,1174),(1117,1175),(1117,1176),(1117,1177),(1117,1178),
    (1117,1179),(1117,1180),(1117,1181)]
    for i,j in c0108edges:
    c0108.edge(str(i),str(j),color="#00000080")
    
    display(G)
    
[/code]


CC BY-SA 4.0
2022-01-21T01:21:06.477
85827
2022-01-21T04:28:21.783
2022-01-21T04:28:21.783
3060
50998
question
graphviz
Graphviz で画像ファイルの出力及びエッジが無いノードを削除したい


> display(G)で表示される図をpng等の画像ファイルに保存したい
[code]

    G.view(filename='digraph')
    
[/code]

> エッジがないノードを最後に一括削除したい

先の `G.view(filename='digraph')` を追加することで、実行ディレクトリに `digraph` という名前のファイル(`dot`
言語によるソースコード)が作成されます。`gvpr` コマンドがインストールされていれば、以下でエッジを持たないノードを削除してから PNG
形式のファイルを生成します。

[code]

    $ gvpr -c 'N[$.degree==0]{delete(NULL, $)}' digraph | dot -Tpng -o digraph.png
    
[/code]


CC BY-SA 4.0
2022-01-21T04:13:54.367
85834
2022-01-21T04:13:54.367
47127
85827
answer