Matplotlib笔记 · 禁止Matplotlib在Jupyter中输出文本信息

Posted Laurence Geng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib笔记 · 禁止Matplotlib在Jupyter中输出文本信息相关的知识,希望对你有一定的参考价值。

这是个非常初级的问题,但很有趣,值得记录一下(本文地址:https://blog.csdn.net/bluishglc/article/details/128576673,转载请注明出处)。

1. 如何禁止Matplotlib在Jupyter中输出文本信息?

在Jupyter环境下,我们经常会发现Matplotlib在输出图像的同时会伴随输出一些文本信息,其实这些文本信息是当前Cell最后一行代码返回的那个变量,由于在Jupyter中大部分情况下每个Cell的最后一步都是Matplotlib的绘图代码,所以就会看到各种各样不同的文本信息,有时是横纵坐标轴的数组数据,有时是annotation数据等等,这取决于最后一行返回的是Matplotlib的什么对象。

禁止Matplotlib在Jupyter中输出文本信息的方法很简单,就是在最后一行添加plt.show(),令很多新人困惑的是:这个方法做了什么从而阻止了文本信息的输出呢?其实这个问题想通以后还是很低级的。

2. 为什么plt.show()能阻止文本信息的输出?

我们知道,当调用plt.show()就开始图像的实际绘制了,在Jupyter环境中,受migic函数%matplotlib inline的作用,所有图像都会在最后自动显示出来(其实是自动调用了plt.show()),所以通常大家是不会手动调用plt.show()的,而当Cell的最后一行代码是Matplotlib的某种操作时,则整个Cell最后输出的就是这个操作返回的Matplotlib里的某种对象/变量,Jupyter就会将这个变量打印出来,事情就是这么简单。

为什么在显式调用plt.show()后就不会打印文本信息了呢?首先,明确一下,必须是在Jupyter Cell的最后一行调用plt.show()才有效,其次,不打印文本信息与plt.show()本身没有太大关系,关键原因是**plt.show()的返回值是None,在Cell的最后一行调用plt.show()时,Cell最后输出的就是一个None,所以就不会打印任何数据了。**

3. 这些文本信息有用吗?需要保留吗?

最后,讨论一下Matplotlib打印的文本信息有没有用,需不需要保留打印功能。我们可以看到所有信息都是Matplotlib组件的信息,部分的组件确实会打印大量的数据,但这些信息未必都是填充的原始数据,而很有可能是横纵坐标轴使用的数组信息,说到底,都是为绘图准备的。所以,绝大多数情况下都不需要查看这些数据,如果需要在程序中打印数据,就应该显示地调用print或使用Cell分段,这才是最佳实践。

以上是关于Matplotlib笔记 · 禁止Matplotlib在Jupyter中输出文本信息的主要内容,如果未能解决你的问题,请参考以下文章

Python开发模块:matplotlib 绘制折线图

%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'

无法从脚本加载 matplotlib.pyplot

数据分析与展示---Matplotlib入门

Scikit Learn Xticks Matplotlib [重复]

Numpy+Pandas+Matplotlib学习