Matplotlib 是 Python 数据分析时最基本的绘图库,对于 Matplotlib 我们应该并不陌生,在介绍 Pandas 库的使用时,我们也顺带提到了绘图与 Matplotlib 库。
Pandas - 绘图操作:https://www.jianshu.com/p/730b7debaa99
Matplotlib 中基本的绘图操作
下面,我们绘制一条直线:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
plt.plot([1,2,3,4,5],[1,2,3,4,5])

在横坐标和纵坐标添加标签:
plt.plot([1,2,3,4,5],[1,2,3,4,5])
plt.xlabel('X')
plt.ylabel('Y')

当然,允许我们在添加坐标轴标签时,指定标签的字体大小:
plt.plot([1,2,3,4,5],[1,2,3,4,5])
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)

Matplotlib 绘图时默认使用直线,此外,允许我们指定其它线型,如虚线、点等等。
| 字符 | 类型 | 字符 | 类型 |
|---|---|---|---|
'-' |
实线 | '--' |
虚线 |
'-.' |
虚点线 | ':' |
点线 |
'.' |
点 | ',' |
像素点 |
'o' |
圆点 | 'v' |
下三角点 |
'^' |
上三角点 | '<' |
左三角点 |
'>' |
右三角点 | '1' |
下三叉点 |
'2' |
上三叉点 | '3' |
左三叉点 |
'4' |
右三叉点 | 's' |
正方点 |
'p' |
五角点 | '*' |
星形点 |
'h' |
六边形点1 | 'H' |
六边形点2 |
'+' |
加号点 | 'x' |
乘号点 |
'D' |
实心菱形点 | 'd' |
瘦菱形点 |
'_' |
横线点 |
plt.plot([1,2,3,4,5],[1,2,3,4,5],'--')
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)

指定线条的颜色:
| 字符 | 颜色 |
|---|---|
‘b’ |
蓝色,blue |
‘g’ |
绿色,green |
‘r’ |
红色,red |
‘c’ |
青色,cyan |
‘m’ |
品红,magenta |
‘y’ |
黄色,yellow |
‘k’ |
黑色,black |
‘w’ |
白色,white |
plt.plot([1,2,3,4,5],[1,2,3,4,5],'--',color='magenta')
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)

如果我们同时指定线条和线条的颜色,通常会把表示它们的符号写在一个字符串中即可:
plt.plot([1,2,3,4,5],[1,2,3,4,5],'--r')
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)

此外,还可以使用 linewidth 参数制定线条宽度:
x = np.linspace(-10,10)
y = np.cos(x)
plt.plot(x,y,color='c',linewidth=2.2)
绘制结果:

绘制图形时,还可以使用 marker 将数据点标记出来,只需要将 marker 指定为标记时使用的符号即可:
plt.plot(x,y,color='c',linestyle=':',marker='o',markerfacecolor='m',markersize=10)
绘制结果:

上述我们在设置绘图细节时,都是在 plot 函数中传入参数的方式实现的。除此之外,我们也可以现将图画出来,然后使用 plt.setp 来设置所会图形的细节。
line = plt.plot(x,y)
plt.setp(line,color='g',linestyle=':',linewidth=2.2,marker='o',markerfacecolor='c',markersize=10)
绘制结果:

子图
在同一个坐标系中绘制多个图:
arr = np.arange(-1,1,0.1)
plt.plot(arr,arr,'r')
plt.plot(arr,arr**2,'m--')
plt.plot(arr,arr**3,'c-.')

也可以在 plot 时直接传入多组数据:
plt.plot(
arr,arr,'r',
arr,arr**2,'m--',
arr,arr**3,'c-.'
)
如果将上述图形以子图的形式绘制在多个坐标系中,主要用到 plt.subplot 方法:
plt.subplot(221)
plt.plot(arr,arr,'r')
plt.subplot(222)
plt.plot(arr,arr**2,'m--')
plt.subplot(223)
plt.plot(arr, arr**3,'c-.')

不难看出,221 即 2 行 2 列子图集的第一个子图,222 即 2 行 2 列子图集的第二个子图,以此类推。