【来源】:第一回:Matplotlib初相识 — fantastic-matplotlib
Matplotlib的图像是画在figure(如windows,jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。
一个axes就是一个子图
pyplot.subplots命令
pyplot.subplots
命令是最简单的创建figure以及axes的方式
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
fig, ax = plt.subplots() # 创建一个包含一个axes的figure
创建axes以后,可以在上面绘图,比如使用.plot绘制折线
图:
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]); # 绘制了一个简单的折线图
pyplot命令
matplotlib.pyplot可以
直接在当前axes上绘制图像,如果用户未指定axes,matplotlib会自动创建一个。
所以创建上述折线图可以简化为以下这一行代码。
line =plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
一个matplotlib图像包括四个层级的元素:
Figure
:顶层级,用来容纳所有绘图元素Axes
:核心,一个子图,一个figure可以由一个或多个子图组成Axis
:axes的下属层级,用于处理所有和坐标轴、网格有关的元素Tick
:axis的下属层级,用来处理所有和刻度有关的元素
matplotlib提供了两种最常用的绘图接口
感觉OO模式会更自由,能绘制更多复杂图表
分别使用两种接口绘制下图:
第一种接口
x = np.linspace(0, 2, 100)
fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x**2, label='quadratic')
ax.plot(x, x**3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
plt.show()
第二种接口
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像时进行设置
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 定义布局, 这一模块的扩展参考第三章进一步学习
fig, ax = plt.subplots()
# step4 绘制图像, 这一模块的扩展参考第二章进一步学习
ax.plot(x, y, label='linear')
# step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend() ;
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像时进行设置
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 定义布局, 这一模块的扩展参考第三章进一步学习
# step4 绘制图像, 这一模块的扩展参考第二章进一步学习
plt.plot(x, y, label='linear')
# step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
Trick: 在jupyter notebook中使用matplotlib时会发现,代码运行后自动打印出类似
这样一段话,这是因为matplotlib的绘图代码默认打印出最后一个对象。如果不想显示这句话,有以下三种方法。
;