通过代码修改解决Graphviz中出现的中文乱码问题
Graphviz中出现的中文乱码问题
Graphviz中出现的中文乱码基本上在安装后都会出现的问题,其实这是很正常的,在许多的国外软件开发中都不会自带中文字体,大部分都需要对源代码进行修改,然后才能识别中文以及转换为中文。Graphviz也不例外,其源代码自带的字体并不支持中文显示,所以需要进行修改。
一、出现问题的情形
之前我的代码是这样的
import graphviz
dot_data = tree.export_graphviz(clf
,out_file=None
,feature_names=feature_name
,class_names= ["琴酒","雪莉","贝尔摩德"]
,filled = True
,rounded = True)
graph = graphviz.Source(dot_data)
graph.view()
这个代码虽然也能得到pdf文件,但是中文会出现乱码的情况。
二、解决中文乱码的问题
修改字体的源代码
对于各个版本不同修改代码的样式也不尽相同,大家可以尝试下,不过要对原来的代码进行留影保存,以便于返回。由于我是通过Anaconda安装的Graphviz所以我对应的fonts软件在D:\Anaconda3.0\pkgs\graphviz-2.38-hfd603c8_2\Library\fonts里面,大家根据自己的安装位置寻找哈。找到fonts.conf文件,采用记事本打开
大家对Font directory list 和Font directory list 按照我的代码进行修改,改为
修改Graphviz的代码
我的代码是基于windows系统的在pycharm编译器中编写的,跟jupyter不同的,代码调用如下:
import graphviz
dot_data = tree.export_graphviz(clf
,out_file=None
,feature_names=feature_name
,class_names= ["琴酒","雪莉","贝尔摩德"]
,filled = True
,rounded = True)
graph = graphviz.Source(dot_data.replace('helvetica','"Microsoft YaHei"'), encoding='utf-8')
graph.render('wine',)
最终得出的结果就不会出现中文乱码啦!
希望对大家有所帮助!