绘制决策树
1. 概述
我们在上个博客已经学会使用代码来构造决策树了。但是,为了让构造出来的决策树具有可读性,我们还需要绘制决策树。
2. 设定样式
# 该代码的作用是设定节点和箭头的样式
# 该代码位于treePlotter.py文件中
import matplotlib.pyplot as plt
'''
在matplotlib中,dict函数用于定义文本框和箭头样式
其中:boxstyle参数就代表文本框样式 fc代表颜色深度,fc越小,颜色越深
arrowstyle参数代表箭头样式
'''
decisionNode = dict(boxstyle='sawtooth',fc='0.8') # 决策节点的样式
leafNode = dict(boxstyle='round4',fc='0.8') # 叶节点的样式
arrow_args = dict(arrowstyle='<-') # 边的样式(箭头)
3. 使用annotations来绘制树节点
# 该函数的作用就是绘制树节点
# 该函数位于treePlotter.py文件中
def plotNode(nodeTxt,centerPt,parentPt,nodeType):
# 这里的内容可以参见我的matplotlib博客:Chapter5 注解
sub_plot.annotate(nodeTxt,xy=parentPt,xycoords='axes fraction',xytext=centerPt,textcoords='axes fraction',
va='center',ha='center',bbox=nodeType,arrowprops=arrow_args)
4. 绘制子图并进行初步的显示
# 当frameon=True的时候, 图示会被绘制在一个patch实体上;
# 否则, 如果frameon=False, 则图示会被直接绘制在图片上.
# 这里, 讨论是否将图示绘制在一个patch实体上的意义在于,
# 当把它绘制在一个patch实体上时, 我们才可以使用facecolor, edgecolor, framealpha, fancybox等参数来设置图示的背景(不是图片的背景)的颜色, 边框颜色, 透明度, 以及形状,
# 而当frameon=False的时候这些参数就会失效.
# 以上内容来源于:https://blog.csdn.net/nankai0912678/article/details/109520614
def createPlot():
fig = plt.figure(1,facecolor='white')
fig.clf()
global sub_plot
sub_plot = plt.subplot(111,frame_on=False) # 创建子图
plotNode('decision Node',(0.5,0.1),(0.1,0.5),decisionNode) # 绘制树节点
plotNode('leaf Node',(0.8,0.1),(0.3,0.8),leafNode) # 同上
plt.show()
我们学会了如何绘制节点后,接下来我们就来绘制整棵树。
标签:plt,样式,Chapter3,dict,绘制,节点,决策树
From: https://www.cnblogs.com/gao79135/p/17317863.html