Python学习笔记(11-1):matplotlib绘图——图形语法
文章导读
- 课程难度:★★☆☆☆
- 重要度:★★★★★
- 预计学习时间:40分钟
- 简介:本节主要讲解了使用matplotlib绘图的基本图形语法,包括:(1)使用简单的例子展示基础绘图的步骤;(2)设置图像的基础参数和属性,如图例、x轴、y轴和图像的名称等;(3)基于定义画布、绘制子图和figure、axes对象的画布与子图的设置;(4)使用函数plt.savefig()保存图像。
- 重点涉及的函数和内容:plt.show()、plt.savefig()、plt.figure()、plt.subplot()、plt.subplots()、plt.xlabel()、plt.ylabel()、plt.title()、plt.legend()。
前言
这部分我们只讲解一个最基础的matplotlib
库,但这就足够了。因为另外一些应用广泛的包,例如seaborn
也是基于matplotlib
进行封装的,而plotly
虽然能绘制动态图,但是它的应用则受到诸多限制。
我们首先用最基本的图形描述其在matplotlib
下的基础图形语法,接着讲解其通用的一些参数。然后,我们会延伸一些例子,面向各种需要实现常用图表的绘制。
在此,先导入包和我们这边会用到的一些数据集:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import pandas as pd
一、matplotlib图形语法
对于一个图而言,它的绘制遵循着如下的步骤。这些步骤实际上可看做执行一批设置绘图参数的指令,但这种执行指令的过程都是利用函数而不是传递参数而实现的:
(1)声明一个即将绘制的画布(可选) - Figure
对象,在绘制子图时讲解。
(2)声明当前即将绘制的子图(可选) - Axe
对象,在绘制子图时讲解。
(3)在当前的子图下声明即将绘制的图的类型,以及待用的数据。
(4)在当前绘图的类型下,声明绘图的各类参数(可选)。
(5)定义好各个参数后,将当前的绘图对象输出或保存。
1、基础绘图
实现一个最基础的绘图可以说轻而易举,我们只需要三步:定义待绘制数据、调用绘图函数、将图输出:
x = np.linspace(0, 2, 10) # 生成一个自0到2的等差数列,包含100个元素
plt.plot(x, x)
# 声明当前绘图的类型,一般的折线图(plot),即连续的各点间的连线图。
plt.show() # 将曲线输出
绘图效果如下。这里先补充讲解一下,如果传入的是plot(x)
,那么绘制曲线x时横坐标设置为range(len(x))
,而传入plot(x,y)
时曲线的横坐标为x,纵坐标为y。
matplotlib的整套基础语法知识:
(1)`plt`作为一个函数库,实际上管理着我们的图形对象,我们在此是直接用类方法管理着图形属性,也可以用当前画布和子图对象来管理(之后会讲)。
(2)在绘图前需要定义画布和子图,但步骤可省。如果当前没有定义二者而直接调用了绘图函数,就会默认定义一个画布,这张画布包含唯一一个子图。
(3)对于细节参数,例如X、Y轴的名称标度、曲线的颜色等等,可以不予定义,将会默认值进行输出。
(4)作为程序的最后一步,当`plt.show()`被调用后,会将当前已经定义好的图形全部输出,同时清空已经当前的图形对象。
2、图形属性参数
接下来,我们为数据补充两个部分,一是绘制多根曲线并指定一些图形参数,二是增加一些图形属性。我们还是手工定义待绘制的数据:
x = np.linspace(0, 2, 10)
我们同时绘制一次、二次和三次曲线,同时设置曲线的图例(label)。而且,不仅绘制对应数据列的曲线图,也同时在当前图像上绘制数据的散点图:
plt.plot(x, x, label='linear') # 用plt.plot()绘制数据的连线图
plt.plot(x, x**2, label='quadratic') # label是曲线的名称
plt.plot(x, x**3, label='cubic')
plt.scatter(x, x, label='linear') # 用plt.scatter()绘制数据的散点图
plt.