关于经常使用的 fig, ax = plt.subplots()

在使用 matplotlib 画图时经常使用 fig, ax = plt.subplots()
其中 fig 是Figure类实例, 是所有绘图元素的顶级容器. 可以在后续用于保存图片或者对图片进行其他操作.
一般日常使用中我们只会用到 ax, ax是Axes类实例, 一般用于绘图, 包含大多数图形元素Axis, Tick, Line2D, Text, Polygon等, 并设置坐标系.

plt.subplots() 实际上是相当于 plt.subplots(1, 1), 创建一个 1×1 的画布, ax只能表示一个子图. 如果创建多子图的画布的话, 建议这样表示 fig, axes = plt.subplots(m, n), axes是一个 m×n 的数组, 表示 m×n 个子图.

关于图例 legend

设置图例

一般只要在绘制时给每个数据加个 title, 再在后面 plt.show() 之前加一句 plt.legend() 即可.
这里详细谈一谈 plt.legend

不带参数调用 legend 会自动获取图例句柄及相关标签, 此函数等同于:

1
2
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)

为完全控制要添加的图例句柄, 通常将适当的句柄直接传递给 legend: plt.legend(handles=[l1, l2]) , 也可以手动设置标签 plt.legend(handles=[l1, l2], labels=['up', 'down'])

图例的位置

图例的位置可以通过关键字参数loc指定. 当我们指定 loc = ‘upper right’,legend 图例将在右上角展示.
你还可以指定 loc 在任何你想要指定的位置 plt.legend(handles=[l1, l2], labels=['up', 'down'], loc='lower right')

其中 loc 的参数如下:

数字 字符 数字 字符 数字 字符
0 ‘best’ 1 ‘upper right’ 2 ‘upper left’
3 ‘lower left’ 4 ‘lower right’ 5 ‘right’
6 ‘center left’ 7 ‘center right’ 8 ‘lower center’
9 ‘upper center’ 10 ‘center’

loc参数使用数字和字符均可, 这里建议使用字符, 简单明了.

参考文献

1. Matplotlib 系列之「Legend 图例」