机器学习实战笔记二——matplotlib绘图
因人之力而敝之,不仁。失其所与,不知。以乱易整,不武。——古文观止 · 烛之武退秦师
在学习机器学习书籍时,一般都推荐python,matlab或者octave首先来做算法实现。
在Python中,涉及到一个非常好用的绘图库就是matplotlib。
今天我们来介绍一个matplotlib的基本操作。
基础演示
首先我们看一个基本的样例:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1, 15)
y = 2 * x + 5
plt.title("demo")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x, y)
plt.show()
运行结果如下图所示:
上述代码是Matplotlib与numpy库一起使用的一个基础样例。
下面列举几个Matplotlib中常用的函数以及基础的使用样例。
plot函数
plot函数调用有两种形式,我们可以通过help命令查看:
plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
其中中括号扩起来的部分表示可选参数。
其中, fmt表示线/点的样式,包括颜色,点型,线型。fmt = ‘[颜色] [点型] [线型]’,例如plot(x, y, 'b+-')
表示绘制蓝色+号实线图,如下所示:
也可以按照如下代码编写:
plt.plot(x, y, color='blue', marker='+', linestyle='-')
这一句的效果与上面的plot(x, y, 'b+-')
是一样的,其他可添加的属性还包括:
线条宽度:linewidth, 点标记大小:markersize,其他相关属性可参考:line2D
subplot函数
见字知意,该函数表示向现有图形窗口中添加子图。来看示例:
subplot(nrows, ncols, index, **kwargs)
其中的参数分别表示子图在整个图形窗口网格中的位置与索引。
如下代码所示:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1, 15)
y = 1 * x + 5
y2 = 2 * x + 0
y3 = 5 * x + 0
y4 = 10 * x + 0
plt.subplot(2, 2, 1)
plt.xlim((0, 15))
plt.ylim((0, 150))
plt.title("y")
plt.plot(x, y)
plt.subplot(2, 2, 2)
plt.xlim((0, 15))
plt.ylim((0, 150))
plt.title("y2")
plt.plot(x, y2)
plt.subplot(2, 2, 3)
plt.xlim((0, 15))
plt.ylim((0, 150))
plt.title("y3")
plt.plot(x, y3)
plt.subplot(2, 2, 4)
plt.xlim((0, 15))
plt.ylim((0, 150))
plt.title("y4")
plt.plot(x, y4)
plt.show()
输出结果如下所示:
其中,可以看到,通过nrows与ncols将整个视窗划分为nrows*ncols
的网格,然后通过index
按照从左到右,从上到下的次序依次补充图形。当然,图形并不总是相同的,还可以进行如下的绘制:
scatter 散点图
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
这个函数需要引起重视,为什么呢?
因为在机器学习中,我们常常需要查看原始数据的分布情况,得出一个初步的结论,这是就会用到散点图了。
散点图scatter各个参数的具体含义可以参考链接。
其他常用函数:
函数 | 含义 |
---|---|
pyplot.bar | 柱状图 |
pyplot.pie | 饼图 |
- 点赞
- 收藏
- 关注作者
评论(0)