机器学习-数据科学库:matplotlib总结

matplotlib

  matplotlib中包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图、正弦曲线,甚至是三维图形。Python科学计算社区经常使用它完成数据可视化工作。在matplotlib面向对象的绘图库中,pyplot是一个方便的接口,其约定俗成的调用形式如下:

import matplotlib.pyplot as plt

图形对象与元素

  matplotlib图表的组成元素包括:图形(figure)、坐标图形(axes)、图名(title)、 图例(legend)、主要刻度(major tick)、次要刻度(minor tick)、主要刻度标签(major tick label)、次要刻度标签(minor tick label)、Y轴名(Y axis label)、X轴名(Xaxis label)、边框图(line)、数据标记(markers)、网格(grid)线等。具体如下图所示。
在这里插入图片描述

matplotlib图表的组成元素

  matplotlib主要包含两类元素。

  1. 基础(primitives)类:线(line)、点(marker)、文字(text)、图例(legend)、网格(grid)、标题(title)、图片(image)等;
  2. 容器(containers)类:图形(figure)、坐标图形(axes)、坐标轴(axis)和刻度(tick)。

  基础类元素就是我们要绘制的标准对象,容器类元素则可以包含许多基础类元素并将它们组织成一个整体,它们也有层级结构:图形(figure)→坐标图形(axes)→坐标轴(axis)→刻度(tick),其具体的区别如下:

  • figure对象:整个图形即是一个figure对象。figure对象至少包含一个子图,也就是axes对象。figure对象包含一些特殊的artist对象,如图名(title)、图例(legend)。figure对象包含画布(canvas)对象。canvas对象一般不可见,通常无须直接操作该对象,matplotlib 程序在实际绘图时需要调用该对象。

  • axes对象:字面上理解,axes是axis(坐标轴)的复数,但它并不是指坐标轴,而是子图对象。可以这样理解,每一个子图都有X轴和Y轴,axes则用于代表这两个坐标轴所对应的一个子图对象。常用方法:set_xlim() 及set_ylim() ——设置子图X轴和Y轴对应的数据范围;set_title() ——设置子图的图名;set_xlabel()以及set_ylable() ——设置子图X轴和Y轴名。在绘制多个子图时,需要使用axes对象。

  • axis对象:axis是数据轴对象,主要用于控制数据轴上的刻度位置和显示数值。axis有locator和formatter两个子对象,分别用于控制刻度位置和显示数值。

  • tick对象:常见的二维直角坐标系(axes)都有两条坐标轴(axis),横轴(X axis)和纵轴(Y axis)。每个坐标轴都包含两个元素:刻度(容器类元素),该对象里还包含刻度本身和刻度标签;标签(基础类元素),该对象包含的是坐标轴标签。

  要画出一幅有内容的图,还需要在容器里添加基础元素,比如线(line)、点(marker)、文字(text)、图例(legend)、网格(grid)、标题(title)、图片(image)等。除图表数据系列的格式外,我们平时主要调整的图表元素,包括图表尺寸、坐标轴的轴名及其标签、刻度、图例、网格线等,如下表所示。

图表主要元素调整的函数说明

在这里插入图片描述

常见图表类型

  matplotlib可以绘制的常见二维图表如下表所示,包括曲线图、散点图、柱形图、条形图、饼图、直方图、箱形图等。

matplotlib常见二维图表的绘制函数表

在这里插入图片描述
在这里插入图片描述

子图的绘制

  一幅图中可以有多个坐标系(axes),那是不是就可以说一幅图中有多幅子图(sub plot),因此坐标系和子图是不是同样的概念?其实,这两者在绝大多数情况下是的,只是有一点细微差别:坐标系在母图中的网格结构可以是不规则的;子图在母图中的网格结构必须是规则的,其可以看成是坐标系的一个特例。所以,用matplotlib绘制多幅子图和坐标系主要有两种方式,pyplot方式和axes面向对象的方式。如下表所示,matplotlib主要有7种子图分区的方法,其中方法1~方法3最为常用。

matplotlib多幅子图和坐标系的添加方法表

在这里插入图片描述
在这里插入图片描述
  其中,subplot() 函数的参数有nrows(行)、ncols(列)、index(位置)、projection(投影方式)、polar(是否为极坐标);当projection='3d’时,表示绘制三维直角坐标系;当polar=True时,表示绘制极坐标系。plt.axes([left,bottom,width,height]) 函数的[left,bottom,width,height]可以定义坐标系left,代表坐标系左边到figure左边的水平距离,bottom代表坐标系底边到figure底边的垂直距离,width代表坐标系的宽度,height代表坐标系的高度。

坐标系的变换

  在编码数据时,需要把数据系列放到一个结构化的空间中,即坐标系,它赋予X、Y坐标或经纬度以意义。下图展示了3种常用的坐标系,分别为直角坐标系[也称为笛卡儿坐标系(rectangular coordinates)]、极坐标系(polar coordinates)和地理坐标系(geographic coordinates)。它们几乎可以满足数据可视化的所有需求。
在这里插入图片描述

图表的导出

  plt.savefig() 函数可以将matplotlib图表导出不同的格式,包括PDF、PNG、JPG、SVG等,其中导出PDF格式图表的代码如下所示。需要注意的是:要在 plt.show() 之前调用 plt.savefig()。

plt.savefig('filename.pdf', format = 'pdf')

猜你喜欢

转载自blog.csdn.net/weixin_45031468/article/details/112568706