matplotlib 基础
Matplotlib 是一个 Python 的 2D 绘图库,在导入 Matplotlib 库的时候,通常会设置一个别名 mpl。Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。使用 Pyplot 可以很方便的帮助我们绘制出 2D 图表,在使用 Pyplot 时候通常也会为 Pyplot 设置一个别名 plt。
代码语言:javascript复制import matplotlib as mpl
import matplotlib.pyplot as plt
为了绘制图像,这里创建一个一维向量作为自变量 x,并构建正弦函数输出因变量 y。
代码语言:javascript复制import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
为了更好地观察自变量 x 和因变量 y 的关系,最直观的就是绘制函数曲线。我们可以使用 plt.plot
绘制 x 和 y 的曲线,plt.plot
的返回值为 matplotlib.lines.Line2D,要想显示绘制曲线,还需要调用 plt.show
。这里需要说明,绘制曲线的时候,我们可以指定各种样式,设置这些样式有两种方式:
- 第一种,通过为
plt.plot
传入指定参数; - 第二种,通过
plt.plot
的返回值来设置,也就是使用返回的 matplotlib.lines.Line2D 对象,调用对象一些设置样式的方法。
一般使用第一种方式。
代码语言:javascript复制plt.plot(x, y)
plt.show()
plt.plot
实质绘制的是折线图,也就是说点与点之间是通过直线连接的,只不过我们采样的 100 个点比较密集,因此最终绘制的图像整体看上去是一个非常平滑的曲线。如果我们采样的间隔点比较远的话,可以很清楚的看出两点之间是通过一条直线连接的。
x_1 = np.linspace(0, 10, 10)
y_1 = np.sin(x_1)
plt.plot(x_1, y_1)
plt.show()
我们可以同时绘制多个曲线。
代码语言:javascript复制cosy = np.cos(x)
siny = y.copy()
plt.plot(x, siny)
plt.plot(x, cosy)
plt.show()
为 plt.plot
传入 color 参数更改绘制曲线的颜色。
plt.plot(x, siny)
plt.plot(x, cosy, color = "red")
plt.show()
为 plt.plot
传入 linestyle 参数更改绘制曲线的样式。
plt.plot(x, siny)
plt.plot(x, cosy, color = "red", linestyle = "--")
plt.show()
各种样式以及对应的取值。
使用 plt.xlim
和 plt.ylim
分别对图像的横、纵坐标轴的取值范围进行限定。
plt.plot(x, siny)
plt.plot(x, cosy, color = "red", linestyle = "--")
plt.xlim(-5, 15)
plt.ylim(0, 1.5)
plt.show()
还可以使用 plot.axis
同时对横纵坐标轴的取值范围进行调整,参数为一个列表,列表中前两个值为横坐标轴的取值范围,后两个值为纵坐标轴的取值范围。
plt.plot(x, siny)
plt.plot(x, cosy, color = "red", linestyle = "--")
plt.axis([-1, 11, -2, 2])
plt.show()
可以使用 plt.xlabel
和 plt.ylabel
为横纵坐标轴赋予含义。
plt.plot(x, siny, label = "sin(x)")
plt.plot(x, cosy, color = "red", linestyle = "--")
plt.xlabel("x axis")
plt.ylabel("y value")
plt.legend()
plt.show()
同时可以显示图例,用于说明各个曲线。
代码语言:javascript复制# 直接对两个轴进行调整
plt.plot(x, siny, label = "sin(x)")
plt.plot(x, cosy, color = "red", linestyle = "--", label = "cos(x)")
plt.xlabel("x axis")
plt.ylabel("y value")
plt.legend()
plt.show()
使用 plt.title
为图表起标题。
plt.plot(x, siny, label = "sin(x)")
plt.plot(x, cosy, color = "red", linestyle = "--", label = "cos(x)")
plt.xlabel("x axis")
plt.ylabel("y value")
plt.legend()
plt.title("Welcome to the ML World!")
plt.show()
绘制散点图
绘制折线图使用 plt.plot
,绘制散点图使用 plt.scatter
。
plt.scatter(x, siny)
plt.scatter(x, cosy, color = "red")
plt.show()
在机器学习中,通常将绘制折线图的横坐标表示为特征,纵坐标表示为对应的取值,但是在散点图中,横纵坐标轴都表示为特征,而散点图的形状或者颜色表示为对应的取值。在两个特征的分类任务中,我们将横坐标表示为第一个特征,纵坐标表示为第二个特征,将类别信息通过散点图的颜色进行表示。
代码语言:javascript复制x = np.random.normal(0, 1, 10000)
y = np.random.normal(0, 1, 10000)
plt.scatter(x, y, alpha = 0.1) # alpha为透明图
plt.show()
References:
Python3入门机器学习 经典算法与应用: https://coding.imooc.com/class/chapter/169.html#Anchor