言語系統樹を作成する


比較言語学の世界に言語系統樹というものがある.今回,それを描画するコードを出してみた.

かなり簡易的なものでは動的な処理を含んでいて面白い.

# 必要なライブラリのインポート
from ete3 import Tree, TreeStyle, NodeStyle, TextFace

# Newick 形式でツリーを定義
newick_str = "((English,German,Dutch)Germanic,(French,Spanish,Italian)Romance,(Russian,Polish,Czech)Slavic,(Hindi,Persian,Bengali)Indo-Iranian)Indo-European;"
t = Tree(newick_str, format=1)

# TreeStyle の設定
ts = TreeStyle()
ts.show_leaf_name = True  # 葉ノードの名前を表示
ts.title.add_face(TextFace("Language Family Tree (Indo-European Example)", fsize=14), column=0)
ts.branch_vertical_margin = 10

# 各ノードのスタイルを設定
for n in t.traverse():
    nstyle = NodeStyle()
    nstyle["size"] = 10
    nstyle["fgcolor"] = "#2E86AB"
    nstyle["vt_line_width"] = 2
    nstyle["hz_line_width"] = 2
    nstyle["vt_line_color"] = "#2E86AB"
    nstyle["hz_line_color"] = "#2E86AB"
    n.set_style(nstyle)

# ツリーの描画(GUI 環境の場合はウィンドウが表示されます)
t.show(tree_style=ts)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です