python3實現(xiàn)決策樹可視化(graphviz)中文亂碼
python3實現(xiàn)決策樹可視化需要用到包graphviz竹捉,graphviz默認不支持中文,所以當dot文件中包含中文字符時會出現(xiàn)亂碼尚骄。
解決亂碼方法一:
將dot源文件保存為UTF8(Ubuntu下默認為UTF8块差,Windows下默認為ASNI)格式,并將dot文檔中的所有中文都進行修改,把中文包含在英文的引號(“ ”)中憨闰,如下:
“中文字符”
但是對于生成決策樹dot文本中中文較多時状蜗,手動修改需要耗費時間較長,可行性較差鹉动,則可以用第二種方法解決亂碼問題轧坎。
解決亂碼方法二:
將dot源文件保存為UTF8(Ubuntu下默認為UTF8,Windows下默認為ASNI)格式训裆,將圖或結點的字體屬性設置為中文字體,如下:
原始dot文本:
node [shape=box, style="filled, rounded",color="black", fontname=helvetica] ;
edge [fontname=helvetica] ;
修改后代碼文本(主要修改fontname字段):
node [shape=box, style="filled, rounded",color="black", fontname="Microsoft YaHei"] ;
edge [fontname="Microsoft YaHei"] ;
修改dot文本可以選擇手動修改dot文本蜀铲,也可以選擇python語句修改:
import re
# 打開 .dot边琉,修改 fontname="支持的中文字體"
f = open("dataname.dot", "r+", encoding="utf-8")
open('dataname_utf8.dot', 'w', encoding="utf-8").write(re.sub(r'fontname=helvetica', 'fontname="Microsoft YaHei"', f.read()))
f.close()
修改好后,在命令行使用如下命令生成png圖:
dot -Tpng example.dot -o example.png
-T的意思是生成的文件是png格式的记劝,example.dot是代碼所在文件变姨,-o指定生成的文件名。運行成功后將會在對應路徑下得到example.png文件厌丑。
附:Windows系統(tǒng)中文字體的英文名
新細明體:PMingLiU
細明體:MingLiU
標楷體:DFKai-SB
黑體:SimHei
宋體:SimSun
新宋體:NSimSun
仿宋:FangSong
楷體:KaiTi
仿宋_GB2312:FangSong_GB2312
楷體_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微軟雅黑體:Microsoft YaHei