言語系統樹を作成する
比較言語学の世界に言語系統樹というものがある.今回,それを描画するコードを出してみた.
かなり簡易的なものでは動的な処理を含んでいて面白い.
# 必要なライブラリのインポート
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)
