问题:机器学习实战第三章决策树中,遇到树形图中文不显示
源代码如下:
# decision_graphic_tree.py
import matplotlib.pyplot as plt
decisionNode = dict(boxstyle="sawtooth", fc="0.8")
leftNode = dict(boxstyle="round4", fc="0.8")
arrow_args = dict(arrowstyle="<-")
def plotNode(nodeTxt, centerPt, parentPt, nodeType):
createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction',\
xytext=centerPt, textcoords='axes fraction',\
va="center", ha="center", bbox=nodeType, arrowprops=arrow_args)
def createPlot():
fig = plt.figure(1, facecolor='white')
fig.clf()
createPlot.ax1 = plt.subplot(111, frameon=False)
plotNode('决策节点', (0.5, 0.1), (0.1, 0.5), decisionNode)
plotNode('叶节点', (0.8, 0.1), (0.3, 0.8), leftNode)
plt.show()
在pycharm console中输入:
>>>import decision_graphic_tree
>>>decision_graphic_tree.createPlot()
出现以下的错误
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:214: RuntimeWarning: Glyph 20915 missing from current font.
font.set_text(s, 0.0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:214: RuntimeWarning: Glyph 31574 missing from current font.
font.set_text(s, 0.0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:214: RuntimeWarning: Glyph 33410 missing from current font.
font.set_text(s, 0.0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:214: RuntimeWarning: Glyph 28857 missing from current font.
font.set_text(s, 0.0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:214: RuntimeWarning: Glyph 21494 missing from current font.
font.set_text(s, 0.0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:183: RuntimeWarning: Glyph 20915 missing from current font.
font.set_text(s, 0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:183: RuntimeWarning: Glyph 31574 missing from current font.
font.set_text(s, 0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:183: RuntimeWarning: Glyph 33410 missing from current font.
font.set_text(s, 0, flags=flags)
F:\Program\python program\MachineLearningInAction\venv\lib\site-packages\matplotlib\backends\backend_agg.py:183: RuntimeWarning: Glyph 28857 missing from current font.
font.set_text(s, 0, flags=flags)
显示图片中的中文显示只有格子:
这种一般是字体设置之类的错误,于是在网上查找一些解决办法:
解决办法:设置字体环境
plt.rcParams['font.sans-serif'] = ['simHei'] #指定默认字体
>>>from importlib import reload
>>>reload(decision_graphic_tree)
<module 'decision_graphic_tree' from 'F:\\Program\\python program\\MachineLearningInAction\\part_3\\decision_graphic_tree.py'>
>>>decision_graphic_tree.createPlot()
图片中正常显示中文字符:
参考
https://blog.csdn.net/jiangsujiangjiang/article/details/84333144