python3实现决策树可视化(graphviz)中文乱码

python3实现决策树可视化(graphviz)中文乱码

python3实现决策树可视化需要用到包graphviz,graphviz默认不支持中文,所以当dot文件中包含中文字符时会出现乱码。

解决乱码方法一:

将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系统中文字体的英文名

新細明體:PMingLiU

細明體:MingLiU

標楷體:DFKai-SB

黑体:SimHei

宋体:SimSun

新宋体:NSimSun

仿宋:FangSong

楷体:KaiTi

仿宋_GB2312:FangSong_GB2312

楷体_GB2312:KaiTi_GB2312

微軟正黑體:Microsoft JhengHei

微软雅黑体:Microsoft YaHei

你可能感兴趣的:(python3实现决策树可视化(graphviz)中文乱码)