LoginSignup
0
1

More than 1 year has passed since last update.

kroki.ioを用いてダイアログを図形データに変換するモジュール

Posted at

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)

img

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1