#!/usr/bin/env python # coding: utf-8 # # 基于对象的可视化操作 # # 相对于基于函数的可视化操作,Matplotlib提供了更灵活的方式进行可视化操作——基于对象的方法进行操作。 # # 事实上,对Matplotlib来说,每张图都是一个Figure对象,可以通过`plt.figure()`函数产生。Figure对象可以通过`.add_axes()`方法向图中添加Axes对象。Axes对象可以进行绘图操作,调用它的`.plot()`方法相当于调用`plt.plot()`函数。 # # 例如: # In[1]: from matplotlib import pyplot as plt import numpy as np x = np.linspace(0, 5, 10) y = x ** 2 fig = plt.figure() axes = fig.add_axes([0.1, 0.1, 0.8, 0.8]) axes.plot(x, y, 'r') plt.show() # 绘制多张子图时,可以直接使用`plt.subplots()`函数来同时得到Figure对象和子图对应Axes对象数组: # In[2]: import numpy as np from matplotlib import pyplot as plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) fig, axes = plt.subplots(2, 1) axes[0].plot(t1, f(t1), 'bo', t2, f(t2), 'k') axes[1].plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show() # 也可以调用两次.add_axes()方法: # In[3]: from matplotlib import pyplot as plt import numpy as np def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) fig = plt.figure() # 参数含义:左下角横坐标,纵坐标,横轴长度,纵轴长度 axes = fig.add_axes([0.1, 0.5, 0.8, 0.3]) axes.plot(t1, f(t1), 'bo', t2, f(t2), 'k') # 参数含义:左下角横坐标,纵坐标,横轴长度,纵轴长度 axes = fig.add_axes([0.1, 0.1, 0.8, 0.3]) axes.plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show() # In[ ]: