KataGo で目数評価はできるものの、Lizzie で勝率グラフのようにグラフを出すことはできません。
11/23 追記 なんという大嘘・赤っ恥 ↓この赤紫の線はなんだ?? (苦笑)
Python でグラフを描く練習記事ということで。
(追記ここまで)
KataGo で分析をおこなって棋譜を保存すると、ファイルに目数評価のデータが書き込まれるので、それを利用して Python でグラフを作成してみました。
道策 vs 安井算知(2子) で道策1目負け、「道策畢生の名局」として伝えられている碁です。
SGFファイルをみてみると1手ごとに scoreMean: という行がありますので、それを利用します。
以下がソース。 例えばmokusu.py として保存してコマンドラインで
python mokusu.py xxxxxx.sgf
というふうに使います。
↓ 2019/11/22 バグ修正。 負の目数差を正にしていたのを、偶数手目に正負反転
png を sgf と同じ場所、同じ名前で保存するようにした gridを入れた
import sys
import os
import re
import matplotlib.pyplot as plt
def main():
mokusu_list=[]
tesu_list=[]
mokusu=0
tesu=0
input_file = sys.argv[1]
png_file = os.path.splitext(os.path.abspath(input_file))[0]+".png"
with open(input_file,'r',encoding="utf-8_sig") as f:
lines = f.readlines()
for line in lines:
if re.search(r'^scoreMean', line):
tesu = tesu + 1
line = line.replace('scoreMean: ','')
mokusu = float(line)
if (tesu % 2) == 0:
mokusu = mokusu * (-1)
mokusu_list.append(mokusu)
tesu_list.append(tesu)
plt.plot(tesu_list, mokusu_list)
plt.grid(True)
plt.savefig(png_file)
plt.show()
if __name__ == '__main__':
main()
できたグラフがこちらです。