matplotlib系列(1)

Matplotlib是Python中最常用的可视化工具之一, 它比较底层,可定制性强、图表资源丰富。

一、Matplotlib三层结构

1、容器层

容器层主要由Canvas、Figure、Axes组成。
Canvas是位于最底层的,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具。
Figure是Canvas上方的第一层,也是用户可操作的最低层级,在绘图过程中充当画布的角色。
Axes是Canvas上方的第二层,在绘图过程总相当于画布上的绘图区的角色。

  • 画板层Canvas
  • 画布层Figure(可指定画布属性,大小、清晰度等)
  • 绘图区/坐标系(可指定多区域、坐标系显示,通过figure、axes对象)

2、辅助显示层

辅助显示层用于增加相关显示功能、描述。

  • 修改x、y轴刻度(plt.x/yticks())
  • 添加描述信息(plt.x/ylabel();plt.title())
  • 添加网格(plt.grid())

3、图像层

具体描绘的图像(例如各种常见图表)。

二、Matplotlib绘图步骤

**step 1:**准备数据
**step 2:**创建一个画布(figure)
**step 3:**在画布上创建一个或多个绘图区域(坐标系/轴,axes)
**step 4:**绘制图像(根据不同图像类别调用不同方法)
**step 5:**辅助绘制(刻度、图例等)
**step 6:**图像显示/保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

if __name__ == '__main__':
# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

# 创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 创建绘图区域
ax = plt.subplot(111)
ax.set_xlabel("时间变化")
ax.set_ylabel("温度变化")
ax.set_title("某城市11点到12点温度变化")

# 绘制图像
ax.plot(x, y_shanghai, color='b', linestyle='--', label='上海')

# 辅助绘制:显示图例
ax.legend()

# 辅助绘制:准备x、y的刻度以及刻度说明
x_label = ["11点{}分".format(i) for i in x]
ax.set_xticks(x[::5], x_label[::5])
ax.set_yticks(range(0, 40, 5))

# 辅助绘制:添加网格
ax.grid(linestyle='--', alpha=0.5)

plt.show()

三、其他注意事项

1、绘图风格

1
2
print(plt.style.available)
plt.style.use('seaborn-paper')

2、显示问题

Matplotlib默认情况中文和负号不能正常显示,可以更改如下配置来解决。

1
2
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

matplotlib 颜色、标记、线型
matplotlib 坐标轴与刻度
matplotlib中文文档