基于函数的可视化操作
函数plt.plot()
最常用的绘图函数为plt.plot()
函数。例如,可以用plt.plot()
函数绘制一条直线,并使用plt.ylabel()
函数给图像加上一个y轴的标题
from matplotlib import pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
通常,Matplotlib模块不会立即显示绘制的图形,以便后续向图形中添加更多的信息。只有在调用函数plt.show()
后,绘制的图形才会显示。
默认情况下,Python绘制的图形会以弹窗的形式显示,并提供了一些按钮对生成的图形进行一些简单的操作。
如果使用Jupyter Notebook,plt.show()函数则可以省略,Python也不会弹出绘图窗口,而是在Jupyter Notebook的输出中内嵌图片:
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
Text(0, 0.5, 'some numbers')
plt.plot()函数可以绘制基本的点线图,它的使用方式主要有:
plt.plot(x, y)
plt.plot(x, y, format_str)
plt.plot(y)
plt.plot(y, format_str)
例如,指定x,y的参数作为点的x轴坐标和y轴坐标时,plt.plot()函数会用一条直线连接两个相邻的点:
plt.plot([1,2,3,4], [1,4,9,16])
[]
不指定x参数时,x的值默认为range(len(y))。
plt.plot([1,4,9,16])
[]
默认情况下,plt.plot()函数用蓝色实线连接两个相邻的坐标点。可以使用格式字符串即参数format_str控制plt.plot()函数绘制图形的格式。
颜色控制符如下表所示。
字符 | 颜色 |
---|---|
'b' | 蓝色,blue |
'g' | 绿色,green |
'r' | 红色,red |
'c' | 青色,cyan |
'm' | 品红,magenta |
'y' | 黄色,yellow |
'k' | 黑色,black |
'w' | 白色,white |
点线控制符如下表所示。
字符 | 类型 | 字符 | 类型 |
---|---|---|---|
'-' | 实线 | '--' | 虚线 |
'-.' | 虚点线 | ':' | 点线 |
'.' | 点 | ',' | 像素点 |
'o' | 圆点 | 'v' | 下三角点 |
'^' | 上三角点 | '<' | 左三角点 |
'>' | 右三角点 | '1' | 下三叉点 |
'2' | 上三叉点 | '3' | 左三叉点 |
'4' | 右三叉点 | 's' | 正方点 |
'p' | 五角点 | '*' | 星形点 |
'h' | 六边形点1 | 'H' | 六边形点2 |
'+' | 加号点 | 'x' | 乘号点 |
'D' | 实心菱形点 | 'd' | 瘦菱形点 |
'_' | 横线点 |
可以单独或者组合使用颜色和点线控制符来控制绘图的格式:
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
[]
图的显示范围可以通过plt.axis()函数控制:
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
(0.0, 6.0, 0.0, 20.0)
还可以同时传入多组数据,将其绘制在同一张图上:
import numpy as np
t = np.arange(0., 5., 0.2) # 数组也可以作为plt.plot()函数的参数
plt.plot(t, t, 'r--', # 红色虚线
t, t ** 2, 'bs', # 蓝色正方形点
t, t ** 3, 'g^') # 绿色上三角点
plt.show()
plt.plot()函数还支持使用关键字参数来控制绘图的格式。例如,可以使用参数linewidth改变线条的宽度,参数color改变颜色:
x = np.linspace(-np.pi,np.pi)
y = np.sin(x)
plt.plot(x, y, linewidth=2.0, color='r') # 线宽2,颜色红色
plt.show()
可以通过函数plt.subplot()
将多张子图画在同一张图片上,其用法为:
plt.subplot(rows, cols, fignum)
表示在一个rows
×cols
大小的画布上,在第fignum
张图上进行可视化操作,其中fignum
的计数从1开始。比如plt.subplot(3, 4, 8)
时,对应的子图排序是:
1,2,3,4
5,6,7,8
9,10,11,12
当绘制子图的总数小于10时,可以使用一个三位数字替代上面的用法,如plt.subplot(3, 3, 1)
可以写成plt.subplot(331)
。
一个绘制两个子图的例子如下:
import numpy as np
from matplotlib import pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.subplot(211) # 定位到第1张子图
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
plt.subplot(212) # 定位到第2张子图
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.show()