ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 6.1 【可视化之matplotlib】一图带你入门matplotlib Python在数据分析领域有一个很完备的生态系统,在数据处理方面有 Pandas,在数据可视化方面有 Matplotlib,在数据爬取方面有 Scrapy(或者不用框架),在数据挖掘方面有 Scikit-learn等等。 最近这几篇文章,就先来讲讲,比较酷炫的数据可视化,相信你学完之后一定会有满满的成就感。 Matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。Python 科学计算社区经常使用它完成数据可视化的工作。它几乎可以画出你所能想到各种有逼格,文艺的,高雅的图形。 学习 matplotlib 最好的途径是 官网(http://matplotlib.org/),以下内容都是本人从官网上一点一点消化总结出来的,都是精华提炼,毫不含糊。希望你看完也能有所收获。 ## 01. 使用工具 在上一篇文章中,小明首先讲了一个工具,以后文章里的所有操作都将在这里面实现,还没有阅读的小伙伴,记得先去学习下:Jupyter NoteBook。 为什么会推荐使用这个工具呢? 你在一些早期的文章中,可能会看到如下,两种语句, 1. `%matplotlib inline` # IPython模式下 2. `%pylab inline` # Jupyter Notebook模式下 将这两个命令放在你绘图代码前面,它可以在绘图时,将图片内嵌在交互窗口,而不是弹出一个图片窗口(体验感超差有木有)。在这两种模式下,是只要有plt出现,图片会立马show出来(所以可以不用显式的plt.show())。 但是,这也有一个缺陷:除非将代码一次执行,否则,无法叠加绘图, 看完上面,现在的你可能不知道它们有啥用。不过不要紧,现在你可以完全忽视上面这两个语句,因为现在使用 Jupyter NoteBook 已经不再需要指定这两种语句了。 ## 02. 两种方式 在网上有些教程文章,画图使用的是 pylab,而有些使用的是 pyplot。这是常见的两种 那么 pyplot 和 pylab 有什么区别呢? Matplotlib,大家都很清楚,是整个包的名字。 而 pyplot 和 pyplab 都是 matplotlib 中的一个模块; pyplot是一个提供了面向对象的底层状态机接口的绘图库 而 pylab 在官网上,有这样一段话: >pylab is a convenience module that bulk imports matplotlib.pyplot (for plotting) and numpy (for mathematics and working with arrays) in a single name space. Although many examples use pylab, it is no longer recommended. 它的内部其实已经导入了 pyplot 和 numpy 。其实我暂时并不知道它有什么弊端,但是最后一句,给我们提了一个醒,它上面说 pylab 已经不再推荐使用了。所以你如果是一个初学者,在网上看到 pylab 的教程文章,那么你可以跳过不学。所以下面的教程,我都将使用 pyplot。 ## 03. 图表的基本结构 前两天的官网上闲逛的时候,发现了一张图,可以说把一个图表该有的元素都很好的展示出来了。从这张图入手,一点一点地实现这里面的每个元素,我们也算是入门了matplotlib了。 ![](https://i.loli.net/2018/08/12/5b6ff3716fdc0.png) 这里面的大部分元素,我相信会点英文的你都能很轻松的理解。 唯独有这两个概念,我要在这里强调一下,就是 aixs 和 axes 的区别: `axis`:可以认为是两个轴,他可以设置轴的大小限制,set_xlim() ,set_ylim() ,还有设置刻度 ticks(由Locator对象定义),还有ticklabel(由Formatter对象定义)等 `axes`:可以认为是axis的复数,是多个axis组成的。在二维图里,就是两个axis组成,在三D图里,就是三个axis组成。所以你可以粗浅的理解为一个图表就是一个axes,他们可以设置 标题:set_title(),标签:set_xlabel(),set_ylabel()等 ## 04. 画个简单的图 学习完了如上的一些基本元素,我们来看看如何一点一点实现它。 以下的代码都在 NoteBook单元格里运行,后面不再赘述。 ```python import numpy as np import matplotlib.pyplot as plt # x轴对应的值 x = np.linspace(0, 5, 100) # 画图,并设置线形和颜色。 b代表 blue,- 代表线型 plt.plot(x, x**2, 'b-') # 设置x轴和y轴的名字 plt.ylabel('y') plt.xlabel('x') # 设置标题 plt.title("First Figure") # 设置栅格 plt.grid(True) # 设置坐标范围 plt.xlim(0, 3) plt.ylim(0, 7) # 在指定坐标处,标注文字 plt.text(1, 4, r'y=x^2', fontsize=20) # 添加图例,注意是个tuple,加逗号 plt.legend(('MING',),loc='upper right') # 设置刻度标签 lables=[x for x in range(10)] plt.xticks(x,lables) # 打开次刻度 plt.minorticks_on() # 显示图片,在NoteBook中可以不写 plt.show() ``` 以上的注释,可以说是很直白啦。一张图表该有的东西都有了,不花哨,但实用。 看看我们的代码输出的图表是啥样的。 ![](http://image.iswbm.com/20190511164650.png) ----