Matplotlib笔记 · 禁止Matplotlib在Jupyter中输出文本信息
Posted bluishglc
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中输出文本信息的主要内容,如果未能解决你的问题,请参考以下文章
%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'