使用数组绘制
plt.plot([1, 2, 3, 4])
plt.show()
plt.plot(np.arange(16).reshape(4,4))
plt.show()
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
使用函数绘制
x = np.arange(-10, 10, 0.01)
y = x ** 2
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
x = np.arange(0, 2*np.pi, .001)
y = np.sin(2 * np.pi * x)
plt.clf()
plt.plot(x, y)
l = plt.axhline(linewidth=1, color='black')
l = plt.axvline(linewidth=1, color='black')
plt.show()
绘制离散点
添加 ro
参数即可得到离散点图像
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()
在同一个坐标轴中绘制多个曲线
t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
以上, 分为三组:
t, t, 'r--'
t, t**2, 'bs'
t, t**3, 'g^'
其中, 前两个参数分别为x和y轴上的自变量和因变量, 第三个参数指定了曲线的颜色和形状, r
b
g
分别为 红 蓝 绿, 后面的 --
s
^
为曲线的形状。
绘制散点图
通过 scatter 函数可以绘制散点图, 首先看看 scatter 的定义:
scatter(
x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,
edgecolors=None, *, data=None, **kwargs)
首先来绘制一个点:
plt.scatter(2, 4)
plt.show()
ok, 这样就绘制了一个坐标为 (2, 4)
的点
绘制多个点
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)
plt.show()
x_values = list(range(1, 1001, 10))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=1)
plt.axis([0, 1100, 0, 1100000])
plt.show()
如果间隔足够小, 其实图像就变成了一条肉眼看上去连续的曲线 (如果放大, 还是会发现是一些散列点):
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=.1)
plt.axis([0, 1100, 0, 1100000])
plt.show()
修改大小
plt.scatter(2, 4, s=200)
plt.show()
修改颜色
plt.scatter(2, 4, c='r')
plt.show()
默认为蓝色点和黑色轮廓,可在调用 scatter()
时传递实参 edgecolor='none'
删除轮廓:
plt.scatter(x_values, y_values, edgecolor='none', s=40)
颜色可以是一个序列, 用于设置多个颜色:
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, c=y_values, edgecolor='none', s=40)
plt.show()
颜色映射
颜色映射 (colormap) 是一系列颜色,它们从起始颜色渐变到结束颜色。
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolor='none', s=40)
plt.show()
指定数据源
以下示例, 随机绘制了一些不同颜色、不同大小的点:
data = {
'x': np.arange(50),
'c': np.random.randint(0, 50, 50),
's': np.abs(np.random.randn(50)) * 100
}
data['y'] = data['x'] + 10 * np.random.randn(50)
plt.scatter('x', 'y', c='c', s='s', data=data)
plt.xlabel('entry x')
plt.ylabel('entry y')
plt.show()
通过指定 data 为数据源, 其为一个字典, x y c s 取值均为 data 中的 key
参考:
绘制标注、坐标轴
添加label
以下代码添加 x 和 y 轴的 label
plt.xlabel("x", fontsize=14)
plt.ylabel("y", fontsize=14)
添加title
以下代码, 为图像添加标题:
plt.title("Chart", fontsize=24)
修改坐标轴参数
plt.tick_params(axis='both', which='major', labelsize=16)
不显示坐标轴:
plt.axis('off')
绘制网格
plt.grid(True)
绘制文字
使用 text 在图像中添加文字:
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, density=1, facecolor='r', alpha=0.75)
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
使用 annotate 为图像添加标注
ax = plt.subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='red', shrink=0.05),
)
plt.ylim(-2, 2)
plt.show()