graphviz
*Graphvizメモ [[index]] [[dev/graphviz.html]] #contents [[https://graphviz.org/docs/attr-types/color/]] [[https://graphviz.org/doc/info/colors.html]] 色名称 [[https://graphviz.org/docs/attrs/labelloc/]] [[https://graphviz.org/doc/info/shapes.html]] Shapeの形 [[https://graphviz.org/docs/attr-types/style/]] 線種 [[https://graphviz.org/docs/edges/]] [[https://graphviz.org/docs/attr-types/arrowType/]] [[https://graphviz.org/docs/attrs/weight/]] エッジの重み付け **例1 dotファイルの例 example1.dot > digraph example1 { > "ayame" -> "asagao"; > "ayame" -> "himawari"; > "ayame" -> "gold"; > > "asagao" -> "silver"; > "asagao" -> "black"; > > "black" -> "silver"; > "black" -> "bronze"; > "black" -> "cool"; > > "gold" -> "asagao"; > "gold" -> "hot"; > > "hot" [style=bold] > "cool" [style=bold] > "himawari" [style=bold] > "silver" [style=bold] > "bronze" [style=bold] > } PNGに変換して、ペイントで開く。 example1.bat > dot -Tpng -o example1.png example1.dot > %windir%\system32\mspaint.exe example1.png **例2 Nodeに画像 > digraph NarrowCorsaMod{ > CORSAN[image="stop.jpg", fontcolor=white, labelloc=t, label="SSSM.NarrowCorsa", shape=plaintext]; > UnionV1[image="sbar.jpg", fontcolor=white, labelloc=t, label="UNIOV V1", shape="box"]; > UnionV2[image="sbar2.jpg", fontcolor=white, labelloc=t, label="UNIOV V2", shape="box"]; > UnionV4[image="sunion4.jpg", fontcolor=white, labelloc=t, label="UNIOV V4", shape="box"]; > UnionV5[image="sv5a1.jpg", fontcolor=white, labelloc=t, label="UNIOV V5", shape="box"]; > UnionV6[image="sug1.jpg", fontcolor=white, labelloc=t, label="UNIOV V6 GEARED", shape="box"]; > fontcolor="White" > CORSAN -> UnionV1; > CORSAN -> UnionV4; > UnionV1 -> UnionV2; > UnionV2 -> UnionV6; > UnionV4 -> UnionV5; > } **簡素なフロー simple_flow.dot >digraph NarrowCorsaMod{ > CORSAN -> UnionV1[label="Fix"]; > CORSAN -> UnionV4[label="Movable+Tenting"]; >} simple_flow.bat > dot -Tsvg -o simple_flow.svg simple_flow.dot > inkscape.com --export-type="png" --export-width="1024" "simple_flow.svg" > magick simple_flow.png -resize "256x256>" ssimple_flow.png simple_flow.svg &img(simple_flow.svg); simple_flow.png &simg(simple_flow.png); **画像フロー image_flow.dot > digraph NarrowCorsaMod{ > node[ > fontcolor=white, > labelloc=t, > shape=box > ]; > > CORSAN[class="drop_shadow" image="corsan.jpg", label="SSSM.NarrowCorsa"]; > UnionV1[class="drop_shadow" image="unionv1.jpg", fontcolor=white, labelloc=t, label="UNION V1"]; > UnionV4[class="drop_shadow" image="unionv4.jpg", label="UNION V4"]; > > CORSAN -> UnionV1[label="Fix"]; > CORSAN -> UnionV4[label="Movable+Tenting"]; > } image_flow.bat > dot -Tsvg -o image_flow.svg image_flow.dot > inkscape.com --export-type="png" --export-width="1024" "image_flow.svg" > magick image_flow.png -resize "256x256>" simage_flow.png image_flow.png &simg(image_flow.png); image_flow.svg ★右クリックで開くと画像が見えます &img(image_flow.svg); **画像フローに後処理で影を付ける nodeは黒の影をつけてフィルタでぼかし edgeは白縁をつける dotは、画像フローと同じ iamge_flow_shadow.bat ★svg_deco.exeは公開予定。現状未公開です > dot -Tsvg -o image_flow.svg image_flow.dot > svg_deco.exe image_flow.svg image_flow_shadow.svg > inkscape.com --export-type="png" --export-width="1024" "image_flow_shadow.svg" > magick image_flow_shadow.png -resize "256x256>" simage_flow_shadow.png image_flow_shadow.png &simg(image_flow_shadow.png); image_flow_shadow.svg ★右クリックで開くと画像が見えます &img(image_flow_shadow.svg); **svgのfeDropShadowで影を付ける SVGのフィルターで影を付けるのもありなのですが、Chrome,EdgeはよくてもInkscapeが対応してない... >
>
>
image_flow_dropshadow.svg ★右クリックで開くと画像が見えます &img(image_flow_dropshadow.svg); **バージョンによるレンダリングの差 2023-07-04 単純にバージョンによる差かと思いきや、知人の環境でGraphviz8.0.5(Android+Termux)ではラベルとエッジが重ならない。 バージョンによっても差があるし、バージョンが同じでも差があるという感じ。 Android + Termux + Graphviz8.0.5 &img(simple_flow.termux.svg); Ubuntu22.04.2 LTS + Graphviz 2.43.0 Installed by apt. &img(simple_flow.old.svg); Ubuntu22.04.2 LTS + Graphviz 8.0.5 Installed from source. &img(simple_flow.new.svg); Win10 + Graphviz 8.0.5 &img(simple_flow.win.svg); **ノードをまとめるsubgraph subgraphの名前は、"cluster_"にしないと枠線がつかない。 &img(subgraph.png); > digraph tempmeter{ > graph [fontname = "Meiryo"]; > node [fontname = "Meiryo Bold"]; > edge [fontname = "Meiryo"]; > > storage[label="保存と転送\nstorage.exe" shape=box] > XIAO1[label="XIAO RP2040" shape=box3d] > TEMP1[label="気温" shape=invhouse] > > subgraph cluster_temp { > label = "温度測定" > labelloc = "t" > labeljust = "l" > > TEMP1 -> XIAO1 > } > > XIAO1 -> storage > } **日本語 [[Graphvizのコマンドで日本語が文字化けして困った(windows10)>https://qiita.com/lunar_sword3/items/4542dad7f807bb7d0fb5]] >digraph font_test { > graph [fontname = "Meiryo"]; > node [fontname = "Meiryo Bold"]; > edge [fontname = "Meiryo"]; [[Japanese Supplemental Fonts - Windows10>https://learn.microsoft.com/ja-jp/typography/fonts/windows_10_font_list#japanese-supplemental-fonts]] end.
2025-03-31 23:49:04 32400