1、知识梳理
1.1 概述
matplotlib的原理或者说基础逻辑是,用Artist对象在画布(canvas)上绘制(Render)图形。Matplotlib有三个层次的API:
FigureCanvas
代表了绘图区,所有的图像都是在绘图区完成的 Renderer
代表了渲染器,可以近似理解为画笔,控制如何在 FigureCanvas 上画图。 Artist
代表了具体的图表组件,即调用了Renderer的接口在Canvas上作图。
Artist有两种类型:primitives 和containers。
primitive是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等。
container是容器,即用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis。
1.2 matplotlib标准用法
(1)创建一个Figure实例。
(2)使用Figure实例创建一个或者多个Axes或Subplot实例。
(3)使用Axes实例的辅助方法来创建primitive。
1.3 元素介绍
基本要素-primitives包括曲线-Line2D,矩形-Rectangle,图像-image等。
Object Container(对象容器)包括Figure容器、Axes容器、Axis容器和Tick容器等。
2、代码实践
2.1 mat标准流程
import numpy as np
# step 1
# 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例
fig = plt.figure()
# step 2
# 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot
ax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot
# step 3
# 然后用Axes实例的方法画了一条曲线
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s, color='blue', lw=2)
fig.show()
2.2 饼图
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()
3、作业练习
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
plt.style.use('default')
def func(x):
return -1 * (x - 2) * (x - 8) +10
a, b = 2, 9
x = np.linspace(0, 10)
y = func(x)
fig, ax = plt.subplots(figsize=(5, 4))
plt.plot(x, y, 'r', linewidth=2,)
plt.ylim(ymin=0)
ix = np.linspace(a, b)
iy = func(ix)
plt.bar(ix, iy, alpha=0.5, width=0.05, color='lightgray', edgecolor='lightgray', label='The First Bar', lw=1);
plt.text(0.5 * (a + b), 5, r"$\int_a^b f(x)\mathrm{d}x$",
horizontalalignment='center', fontsize=20)
plt.figtext(0.9, 0.05, '$x$')
plt.figtext(0.1, 0.9, '$y$')
plt.show()