解决Graphviz保存决策树出现中文乱码问题,保存为PDF、png格式

问题:

Graphviz输出的决策树可视化图像在jupyter显示没有问题,但是保存为其他类型(PDF)文件时出现中文乱码在这里插入图片描述
原始代码

dot_data = tree.export_graphviz(clf
                                ,feature_names= ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
                                ,class_names=["琴酒","雪莉","贝尔摩德"]
                                ,filled=True
                                ,rounded=True
                               )
graph = graphviz.Source(dot_data)
graph.view()

解决办法:

一、将图形保存为png格式

第一步:在当前文件目录中找到上面代码输出的Source.gv文件
在这里插入图片描述
第二步:打开Source.gv文件,或者从文件夹找到并用记事本打开
在这里插入图片描述
第三步:修改文件字体名字:# fontname=“Microsoft YaHei”
在这里插入图片描述
第四步:在Anaconda Promot中运行 dot -Tpng tree.dot -o test.png将结果保存为图片(前提是你已经安装好了配置好了graphviz环境,安装及配置环境请看这里
在这里插入图片描述
第五步:运行没问题,就会在当前文件夹生成一个test.png的图片
在这里插入图片描述
打开之后就可以看到中文正常显示了
在这里插入图片描述

二、转换成PDF格式

直接更改上面的命令改为 dot -Tpng tree.dot -o test.pdf是不行的,这里有另一种解决办法。
第一步:在输出决策树的notebook页面按F12键,弹出调试窗口
在这里插入图片描述
第二步:点击选择按钮,然后鼠标点击画出来的决策树
在这里插入图片描述
第三步:找到决策树图中对应的在调试窗口中被标记出来的代码,然后往上找到带有“output…”开头的代码,将这行代码复制(用ctrl+c快捷键)
在这里插入图片描述
第四步:在桌面新建一个txt文件,将刚才拷贝的代码放进去,保存
第五步:将文件重新命名为test.html
第六步:用浏览器打开这个html文件,成功,没有中文乱码
在这里插入图片描述
第七步:在此页面空白处右击鼠标–打印—打印成pdf
在这里插入图片描述

方法三:

这个方法是将上面的手动过程写到代码里了,运行之后会自动打开生成的pdf

dot_data = tree.export_graphviz(clf
                                ,out_file = "tree.dot"
                                ,feature_names= ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
                                ,class_names=["琴酒","雪莉","贝尔摩德"]
                                ,filled=True
                                ,rounded=True
                               )
graph = graphviz.Source(dot_data)
with open("tree.dot",encoding='utf-8') as f:
    dot_graph = f.read()
graph=graphviz.Source(dot_graph.replace("helvetica","MicrosoftYaHei")) #如果提示警告可以将MicrosoftYaHei改为FangSong
graph.view()

在这里插入图片描述

  • 23
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值