在学习一些算法,为了展示数据,Matplotlib会比较方便
- 看标题,这是我打算写的这一系列的第一篇关于Matplotlib的简书
- 每一篇这样的简书,都会围绕一个小例子展开
- 所有有关代码,保证都经过测试,可以直接使用
例子用的是Python3实现,但是在使用Matplotlib库上Python2 和 3几乎没区别
本篇目录
- 实例代码展示
- 讲解实例代码的结构
- 讲解实例代码的函数
- 讲解特定参数的意义
1.实例代码以及运行效果:
import matplotlib.pyplot as plt
# boxstyle是文本框类型 fc是边框粗细 sawtooth是锯齿形
decisionNode = dict(boxstyle="sawtooth", fc="0.8")
leafNode = dict(boxstyle="round4", fc="0.8")
arrow_args = dict(arrowstyle="<-")
# annotate 注释的意思
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('a decision node', (0.5, 0.1), (0.1, 0.5), decisionNode)
plotNode('a leaf node', (0.8, 0.1), (0.3, 0.8), leafNode)
plt.show()
createPlot()
运行效果
2.实例代码的结构
- 有两个函数 plotNode()、createPlot()。 plotNode()函数用于画节点
createPlot()函数用于画图 -
decisionNode
、leafNode
和arrow_args
是定义的三个全局变量,分别表示的是三个基本元素。decisionNode
和leafNode
在createPlot()函数调用plotNode()的时候作为参数。arrow_args
是用来画箭头的 - 最后一行,调用
createPlot()
3.函数讲解
- 先看plotNode()
plotNode函数有nodeTxt
,centerPt
,parentPt
,nodeType
这四个参数。nodeTxt
用于记录nodeTxt,即节点的文本信息。centerPt
表示那个节点框的位置。parentPt
表示那个箭头的起始位置。nodeType
表示的是节点的类型,也就会用我们之前定义的全局变量。
可能迷惑:createPlot.ax1 怎么回事?怎么突然跑出来了?
解答:在createPlot中第三行createPlot.ax1 = plt.subplot(111, frameon=False)
进行了创建。意思是这个只是一个新框。annotate是注释的意思,也就是作为原来那个框的注释,也是添加一些新的东西。
- 再看createPlot()
fig = plt.figure(1, facecolor='white')
实现了画布创建,并且背景是白色的
之后就是清除画布,并创建多图展示,但是设置参数是111,构建了一个1*1的模块,并操作对象指向第一个图。
然后就是调用plotNode函数了,进行画点。
plt.show()用于展示画图
4.参数意义:
- boxstyle是文本框类型
- sawtooth是锯齿图文框
- round4是圆一点的四边形(见图)
- arrowstyle是设置箭头类型
文档显示 Axes.annotate(*args, **kwargs)
xy
是终点坐标xytext
是起点坐标
可能疑问:为什么说是终点,但是却是箭头从这出发的?
解答:arrowstyle="<-"
看到没有,这是个反向的箭头
网友评论