如“透视Matplotlib核心功能和工具包 - 结构”所述,Matplotlib具有三层体系结构,顶层称为脚本层,并通过pyplot()API实现。 该API是为没有太多编程经验的用户设计的,因此它使用户免受使用底部两层(美工和后端)创建和渲染图的复杂性的困扰。 对于使用高级功能(例如补丁,集合,使用事件,回调,动画和窗口小部件的交互式绘图)的复杂应用程序,我们将必须使用面向对象的API。 但是,要利用此API的全部潜能,需要大量的Python编码经验。 随着新版本Matplotlib的发布,越来越多的这些功能正在转移到pyplot API中,从而减少了对面向对象API的依赖。
面向对象的API名称有点令人困惑,因为它可能给人的印象是pyplot API不是面向对象的,这是不正确的。 它仅意味着面向对象的API会直接使用美工和后端层,而绕过脚本层(不使用pyplot API)。 它提供了使用Matplotlib提供的完整功能的灵活性,而pyplot API提供了其中的一部分。
使用pyplot和API绘制相关矩阵
在此,我们将了解pyplot和面向对象的API之间的区别。 我们将首先使用pyplot API然后再使用面向对象的API绘制相同的相关矩阵。 我们将使用相同的葡萄酒质量数据集绘制相关矩阵。
-
为pyplot API导入以下库:
import pandas as pd
import matplotlib.pyplot as plt
* 为面向对象的API导入以下库:
```
import pandas as pd
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from IPython.core.display import display
matplotlib.backends具有它支持的一组后端。 在这里,我们将导入FigureCanvasAgg,它提供了用于绘制图形的空间并将其映射到定义的后端设备。
IPython.core.display允许将绘图显示到输出设备上。
以下代码块使用pandas读取数据并使用pyplot API绘制相关矩阵。 这与我们在”透视Matplotlib核心功能和工具包 - 基础绘图“中绘制热图的方式相同:
- 将数据从CSV文件读取到pandas DataFrame中:
wine_quality = pd.read_csv('winequality.csv', delimiter=';')
- 获取wine_quality所有属性的相关矩阵:
corr = wine_quality.corr()
- 定义图形的大小,并绘制图像和相关的颜色条:
plt.figure(figsize=(12,9))
plt.imshow(corr,cmap='hot')
plt.colorbar()
- 设置图形的标题和对号,并将其显示在屏幕上:
plt.title('Correlation Matrix')
plt.xticks(range(len(corr)),corr.columns, fontsize=10, fontweight='bold',rotation=45)
plt.yticks(range(len(corr)),corr.columns)
plt.show()
我们已经熟悉了前面代码块中的所有命令,因为我们已经在”透视Matplotlib核心功能和工具包 - 基础绘图“和透视Matplotlib核心功能和工具包 - 可视化开发中学习了它们。
以下代码块使用面向对象的API(不使用pyplot API)绘制相同的关联图:
- 将数据从CSV文件读取到pandas DataFrame中:
wine_quality = pd.read_csv('winequality.csv', delimiter=';')
- 获取wine_quality所有属性的相关矩阵:
详情参阅 - 亚图跨际