• Matplotlib快速入门笔记


    我正以Python作为突破口,入门机器学习相关知识。出于机器学习实践过程中的需要,快速了解了一下matplotlib绘图库。下图是我学习过程中整理的一些概念。

    matplotlib学习笔记

    本文将以该图为线索梳理相关概念。

    简介

    matplotlib是一个2D绘图库,通过它你可以绘制函数曲线、直方图、散点图等各种图像。

    Python中使用matplotlib主要用到matplotlib.artist.Artist模块。这个模块定义了很多绘图时用到的类型。

    Artist类型

    Artists类型可分为两种:基础数据(primitives)代表了标准的我们想绘制的图形对象,比如Line2D、Rectangle、Text、Image等;容器(container)代表了储存以上对象的地方,比如Axis,Axes和Figure。

    使用流程

    matplotlib标准的使用流程如下:

    1. 创建一个画板(Figure)实例。
    2. 使用画板创建一个或多个轴区实例(Axes)。
    3. 使用轴区实例的相关方法,进行绘图。

    例如下面代码:

    import matplotlib.pyplot as plt  
    import numpy as np  
    x = np.arange(-10, 10, 0.01)  
    y = x*x - 5*x + 1  
    fig = plt.figure()    // 创建画板  
    ax = fig.add_subplot(111) // 创建轴区  
    ax.plot(x, y, 'r--')   // 绘图  
    plt.show()  

    效果如下图:例1效果

    上面例子中我们用了matplotlib.pyplot模块,来创建和展示画板。实际上为了让matplotlib使用起来更靠近类似MATLAB基于命令的形式,这个模块把许多Artist类型的方法进行了封装,组成所谓的The Pyplot API,参考文档。这套API可以让你直接使用pyplot模块进行绘图,而不是使用Artist实例。

    下面例子使用The Pyplot API实现了同样的效果:

    import matplotlib.pyplot as plt  
    import numpy as np  
    x = np.arange(-10, 10, 0.01)  
    y = x*x - 5*x + 1  
    plt.plot(x, y, 'r--')  
    plt.show() 

    需要注意:这里直接使用plt.plot函数进行绘图,看起来好像并没有创建Figure和Axes对象。其实不是的,pyplot模块默认创建ID为1的画板,并且在画板中默认创建‘111’轴区实例。所以你就可直接进行绘图。

    绘图过程是基于当前上下文进行的。也就是说当前选中的是哪一个画板和哪一个轴区,后续调用的绘图函数就是在这个画板和轴区中进行的。你可以通过给plt.figure()指定ID来创建或切换画板。可以通过plt.subplot()figure.add_subplot()来创建或切换轴区。

    解释一下使用plt.subplot()figure.add_subplot()创建Axes时所使用的三位整数组成的参数。假设用xyz代表这三个个位数,则x表示行,y表示列,z为这个x行y列组成的格子中按书写顺序从1开始数下来的第z个。如果超过个位数,传递参数的时候分为独立的三个值进行传递。例如:plt.subplot(10,2,5)

    其他

    了解这些足够我在机器学习实践中使用了。

    在实际应用中可能根据需求的不同选择使用不同的方法绘制图像,如:

    • plot:绘制曲线
    • scatter:绘制散点图
    • hist:绘制直方图
    • imshow:绘制图片
    • ...

    作为扩展,可能还需要了解其他的matplotlib模块:

    • mpl_toolkits.mplot3d:3D绘图的扩展工具。
    • matplotlib.cm:定义颜色映射与相关处理函数。
    • matplotlib.mlab:Python数值函数模块,用于兼容MATLAB命令。
    • matplotlib.path:处理折线。
    • matplotlib.patches:用于生成图形元素。
    • ...

    本文同步博客

  • 相关阅读:
    apache站点优化—静态缓存
    apache站点优化——长连接
    部署LAMP-WordPress站点上线
    hdu 5402 Travelling Salesman Problem (技巧,未写完)
    UVA 11419 SAM I AM (最小点覆盖,匈牙利算法)
    UVA 1175 Ladies' Choice 女士的选择(稳定婚姻问题,GS算法)
    HDU 5380 Travel with candy (贪心,单调队列)
    HDU 5381 The sum of gcd (技巧,莫队算法)
    UVALive 2238 Fixed Partition Memory Management 固定分区内存管理(KM算法,变形)
    hihoCoder #1196 高斯消元·二
  • 原文地址:https://www.cnblogs.com/developerdaily/p/8351576.html
Copyright © 2020-2023  润新知