pythonで標記のモジュールを作成した。
図形データをsvgやpngなどにした場合に、Jupyter上で変換結果を表示する際の処理を共通化するため、そのための前処理も行うものとしている。
kroki.ioとは
各種のダイアログを同じAPIで図形データに変換するもの。本家のフリーサービスを用いる他、独自のサーバー上で動かすことも可能。
必要モジュール
下記のモジュールが必要ゆえ、インストールしていないならば、pipコマンドなどでインストールする。
コード
import requests
from IPython.display import SVG
from IPython.display import Image
def kroki(diagram, diagram_type, output_format="png", url="https://kroki.io"):
""" ダイアグラムを図形データに変換する
Args:
diagram (str) : ダイアグラムを定義した文字列
diagram_type (str) : ダイアグラムのタイプ("mermaid", "graphviz", "plantuml"など)
指定できる値はhttps://kroki.io/examples.htmlを参照のこと
(ダイアグラムのタイプを指定する文字列としてURLに含める文字列をこの引数に指定のこと)
output_format (str) : 出力データのフォーマット
url (str) : kroki webサーバーのurl
独自サーバーを用いる場合以外は省略可
Return:
data : 図形データのバイナリーデータ
img : jupyter 上に図形を表示するためのオブジェクト
displya(img)とすることで、jupyter上で表示される
"""
res = requests.post(
url=f"{url}/{diagram_type.lower()}/{output_format.lower()}",
headers = {'content-type': 'text/plain'},
data=diagram
)
data=res.content
if output_format == "svg":
img = SVG(data=data)
else:
img = Image(data=data)
return data,img
使用例
以下は、jupyter上での実行例
diagram = """
digraph G {
Hello->World
}
"""
data,img=kroki(diagram, "graphviz", "svg")
display(img)