一、背景
当我们在写python程序时,不可避免的需要将数据可视化,也就是绘制出数据的曲线图,以便我们更直观的观察数据间的变化,和方便对比。此时就要用到matplotlib库了。
matplotlib官方给出的定义是:
翻译过来也就是:
Matplotlib:使用python进行可视化。
Matplotlib是一个用于在Python中创建静态、动画和交互式可视化的综合库。Matplotlib使容易的事情变得更容易,使困难的事情成为可能。
matplotlib官网:https://matplotlib.org/
二、一个简单的绘图例子和解析
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
# from matplotlib import pyplot as plt
t = np.linspace(0, 2*np.pi, 100)
print(1.5*np.pi)
y_demo = np.zeros((2, 100))
y_demo[0,:] = np.sin(t)
y_demo[1,:] = np.cos(t)
plt.figure(figsize=(10, 7))
plt.plot(y_demo[0, :], 'g-.', label='demo sine')
plt.plot(y_demo[1, :], 'm', label='demo cosine')
plt.legend(loc="lower left")
plt.grid()
plt.xlabel('time')
plt.ylabel('y')
plt.show()print(y_demo)
绘制出的结果为:
代码解析:
1、import numpy as np
导入numpy库,进行一些数学运算;
2、import matplotlib.pyplot as plt
导入matplotlib库的pyplot模块,这个就是绘图的库,当然也可以写为:from matplotlib import pyplot as plt
3、t = np.linspace(0, 2*np.pi, 100)
定义横坐标 t t t,为0到 2 π 2\pi 2π,并将其分为100份,也就是从0到99(python是从0开始索引的)
4、y_demo = np.zeros((2, 100))
定义纵坐标y_demo,这里2是指两条曲线,且此处的100必须和步骤3的100对应,如果步骤3改为500,此处也应改为500。np.zeros是构造一个全0的数组,这里也就是构造2行100列的全零数组;
5、y_demo[0,:] = np.sin(t)
,第一个函数的纵坐标是y_demo[0,:],切记python是从0检索
6、y_demo[1,:] = np.cos(t)
,第二个函数的纵坐标是y_demo[1,:]
7、plt.figure(figsize=(10, 7))
绘制的图片大小为10*7
8、plt.plot(y_demo[0, :], 'g-.', label='demo sine')
使用plot绘制第一条曲线,颜色g是绿色,线的类型是----,曲线名称为demo sine
9、plt.plot(y_demo[1, :], 'm', label='demo cosine')
使用plot绘制第二条曲线,颜色m是红色,线的类型是实线,曲线名称为demo cosine
10、plt.legend(loc="lower left")
为添加图例,loc可以指定图例位置,可以选择'best', 'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'upper center', 'center'
,当然也可以什么都不写,让他自动选择图例位置,也就是我们常看到的plt.legend()
11、plt.grid()
为图片添加网格,好看一些
12、plt.xlabel('time')和plt.ylabel('y')
添加横纵坐标的标签名称
13、plt.show()
显示图片