交互式图表受到所有人的喜爱,因为它们能够更有效地讲述故事。在数据科学和相关领域也是如此。探索性数据分析是数据预处理管道中的一个重要步骤,在生态系统中有许多可用的库来实现这一点。下图完美地概括了这一观点。
尽管有这么多的选择,被誉为python可视化包鼻祖的Matplotlib仍然是许多人的最爱。但是缺乏互动性是它最大的瓶颈,但是有些大佬已经设计了一些变通方案,通过一些第三方库增加交互的功能。matplotlib可以更改使用的后端的创建来交互式图,本文将研究两个这样的后端,以及它们如何使matplotlib在Jupyter 中呈现交互性。
Matplotlib后端
Matplotlib设计的精妙之处就在于可以支持不同的后端完成不同的功能。首先我们定义:
“前端”是面向用户的代码,即绘图代码,而“后端”则完成所有幕后的工作,例如数据获取,计算等以制作图形。
这意味着交互的先决条件是拥有一个交互式后端。在Jupyter notebook的默认后端是由%matplotlib inline启用的内联后端。它在渲染静态图像方面很出色,但不提供诸如平移、缩放或从其他单元格自动更新数字等交互式功能。
当启用其他后端时就可以实现交互式图像操作。本文将介绍两个常见的方法,可以在数据可视化任务中使用它们。
nbagg后端
backend_nbagg可以在notebook上呈现交互式图形。它利用了为webagg作为开发的基础。
要在Jupyter中输入以下命令启用后端,
代码语言:javascript复制%matplotlib notebook
下面是一个基本的例子来展示nbagg后端的用法。
代码语言:javascript复制# The code is to be run in a Jupyter Notebook
import matplotlib.pyplot as plt
%matplotlib notebook
plt.plot([1,2,3,4,5,6,7], [10, 50, 100, 23,15,28,45], linewidth = 3, c = 'g')
也可以从其他单元格自动更新图形。例如,折线图可以通过下图中后续单元格中执行的代码进行更新。
通过右上角提供的蓝色按钮