1.简介

  matplotlib是python的一个2D绘图库,它可以在不同平台上地使用多种通用的绘图格式(hardcopy formats)和交互环境绘制出出版物质量级别的图片。matplotlib可以通过python脚本,python/ipython shell,web application servers以及six图像用户接口工具箱来调用。

  其官方地址:http://matplotlib.org/index.html

2.使用案例

 2.1 绘制决策树*

 *该代码来自于《机器学习实战》

 # -*- coding: utf-8 -*-
"""
Created on Thu Mar 17 20:24:41 2016 @author: Dale
""" import matplotlib.pyplot as plt decisionNode = dict(boxstyle = "sawtooth", fc = "0.8")
leafNode = dict(boxstyle = "round4", fc = "0.8")
arrow_args = dict(arrowstyle = "<-") def plotNode(nodeTxt, centerPt, parentPt, nodeType):
'''
下面这个函数原型是class matplotlib.axes.Axes()的成员函数annotate()
该函数的作用是为绘制的图上指定的数据点xy添加一个注释nodeTxt,注释的位置由xytext指定
其中,xycoords来指定点xy坐标的类型,textcoords指定xytext的类型,xycoords和textcoords的取值如下:
‘figure points’:此时坐标表示坐标原点在图的左下角的数据点
‘figure pixels’:此时坐标表示坐标原点在图的左下角的像素点
‘figure fraction’:此时取值是小数,范围是([0, 1], [0, 1])
,在图的最左下角时xy是(0,0), 最右上角是(1, 1)
,其他位置按相对图的宽高的比例取小数值
‘axes points’:此时坐标表示坐标原点在图中坐标的左下角的数据点
‘axes pixels’:此时坐标表示坐标原点在图中坐标的左下角的像素点
‘axes fraction’:类似‘figure fraction’,只不过相对图的位置改成是相对坐标轴的位置
‘data’:此时使用被注释的对象所采用的坐标系(这是默认设置),被注释的对象就是调用annotate这个函数
那个实例,这里是ax1,是Axes类,采用ax1所采用的坐标系
‘offset points’:此时坐标表示相对xy的偏移(以点的个数计),不过一般这个是用在textcoords
‘polar’:极坐标类型,在直角坐标系下面也可以用,此时坐标含义为(theta, r) 参数arrowprops含义为连接数据点和注释的箭头的类型,该参数是dictionary类型,该参数含有一个
名为arrowstyle的键,一旦指定该键就会创建一个class matplotlib.patches.FancyArrowPatch类的实例
该键取值可以是一个可用的arrowstyle名字的字符串,也可以是可用的class matplotlib.patches.ArrowStyle类的实例
具体arrowstyle名字的字符串可以参考
http://matplotlib.org/api/patches_api.html#matplotlib.patches.FancyArrowPatch
里面的class matplotlib.patches.FancyArrowPatch类的arrowstyle参数设置 函数返回一个类class matplotlib.text.Annotation()的实例
'''
createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = 'axes fraction', va = 'center', ha = 'center', bbox = nodeType, arrowprops = arrow_args) def createPlot():
fig = plt.figure(1, facecolor='white') #创建新的figure 1, 背景颜色为白色
fig.clf() #清空figure 1的内容
'''
在新建的figure 1里面创建一个1行1列的子figure的网格,并把网格里面第1个子figure的Axes实例axes返回给ax1作为函数createPlot()的属性
,这个属性ax1相当于一个全局变量,可以给plotNode函数使用
'''
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()函数的结果如下:

  

  

matplotlib学习笔记的更多相关文章

  1. Matplotlib学习笔记(二)

    原  Matplotlib学习笔记 参考:Python数据科学入门教程 Python3.6.1 jupyter notebook .caret, .dropup > .btn > .car ...

  2. Matplotlib学习笔记(一)

    原   matplotlib学习笔记 参考:Python数据科学入门教程 Python3.6.1 jupyter notebook .caret, .dropup > .btn > .ca ...

  3. Matplotlib 学习笔记

    注:该文是上了开智学堂数据科学基础班的课后做的笔记,主讲人是肖凯老师. 数据绘图 数据可视化的原则 为什么要做数据可视化? 为什么要做数据可视化?因为可视化后获取信息的效率高.为什么可视化后获取信息的 ...

  4. matplotlib学习笔记.CookBook

    matplotlib 是Python下的一个高质量的画图库,可以简单的类似于MATLAB方法构建高质量的图表. 原始文章地址:http://zanyongli.i.sohu.com/blog/view ...

  5. 科学计算和可视化(numpy及matplotlib学习笔记)

    网上学习资料:https://2d.hep.com.cn/1865445/9 numpy库内容: 函数 描述 np.array([x,y,z],dtype=int) 从Python列表和元组创造数组 ...

  6. matplotlib学习笔记(四)

    利用matplotlib可以显示图像 imread()和imshow()提供了简单的图像载入和显示功能. img = plt.imread("xxx.jpg") imread()可 ...

  7. matplotlib学习笔记(三)

    柱状图 柱状图用其每根柱子的长度表示值的大小,它们通常用来比较两组或多组值.下面的程序从文件中读入中国人口的年龄分布数据,并使用柱状图比较男性和女性的年龄分布. import numpy as np ...

  8. matplotlib 学习笔记02:marker标记详解

    本文内容来自于matplotlib官网:matplotlib官网markers资料 This module contains functions to handle markers. Used by ...

  9. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

随机推荐

  1. OpenStack-Keystone(2)

    一. Keystone 概述 管理用户及其权限 维护OpenStack Services的Endpoint Authentication(认证)和 Authorization(授权) 1.验证用户 验 ...

  2. final关键字总结

    参考文章[https://www.cnblogs.com/xrq730/p/4820296.html] 前言:在Java中final作为最常见的一个关键字,平常用到的地方也很多,接下来就来看看什么是f ...

  3. ABP中模块初始化过程(二)

    在上一篇介绍在StartUp类中的ConfigureService()中的AddAbp方法后我们再来重点说一说在Configure()方法中的UserAbp()方法,还是和前面的一样我们来通过代码来进 ...

  4. js基础-字符串常用属性合集

    /*   *   * 实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法   * 静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调 ...

  5. Android的LinearLayout中orientation默认值为什么是HORIZONTAL

    在一个偶然(闲着无聊)的过程中,突然非常好奇为什么LinearLayout在不指定排列方向为垂直(VERTICAL)时就得是水平方向(HORIZONTAL)排列的.产生这个疑问的时候脑子里蹦出来的第一 ...

  6. HTML div 盒子 添加/删除——浮层

    1.clear语法:clear : none | left|right| both 2.clear参数值说明:none : 允许两边都可以有浮动对象both : 不允许有浮动对象left : 不允许左 ...

  7. Flask 蓝图,数据库链接

    蓝图 使用场景 如果代码非常多,要进行归类.不同的功能放在不同的文件,把相关的视图函数也放进去. 蓝图也就是对flask的目录结构进行分配(应用于小,中型的程序) 当然对于大型项目也可以通过   ur ...

  8. opencv 图片位移

    import cv2 as cv import numpy as np # 图片移位 img = cv.imread('../images/moon.jpg', flags=1) # flags=1读 ...

  9. lesson03

    3.1. 画 点 3.2. 基准平面 (重要) 1. 关于 点 的使用() 1.画一条直线,在线上画一个点(利用该点占该线段的百分比画出),通过该点画一条直线 2. 画一个长方体,定位到上表面.选择( ...

  10. [jzoj]4271. 【NOIP2015模拟10.27】魔法阵(37种转移的dp)

    题意不说 应该这辈子都不会忘记了... 这是我人生中做的最SB的一道DP题. 真的打的我心态崩了.... 可是竟然被我调出来了..... 也是没谁了... 我们设\(F[i][j][S]\)表示到第\ ...