首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一张图带你入门 matplotlib(一)

第一时间关注Python技术干货!

Python在数据分析领域有一个很完备的生态系统,在数据处理方面有 Pandas,在数据可视化方面有 matplotlib,在数据爬取方面有 Scrapy(或者不用框架),在数据挖掘方面有 Scikit-learn等等。

最近这几篇文章,就先来讲讲,比较酷炫的数据可视化,相信你学完之后一定会有满满的成就感。

matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。Python 科学计算社区经常使用它完成数据可视化的工作。它几乎可以画出你所能想到各种有逼格,文艺的,高雅的图形。

学习 matplotlib 最好的途径是 官网(http://matplotlib.org/),以下内容都是本人从官网上一点一点消化总结出来的,都是精华提炼。希望你看完也能有所收获。

1. 使用工具

在上一篇文章中,小明首先讲了一个工具,以后文章里的所有操作都将在这里面实现,还没有阅读的小伙伴,记得先去学习下:

为什么会推荐使用这个工具呢?除了上一篇文章中提到的之外,还有一个原因。

你在一些早期的文章中,可能会看到如下,两种语句,

将这两个命令放在你绘图代码前面,它可以在绘图时,将图片内嵌在交互窗口,而不是弹出一个图片窗口(体验感超差有木有)。在这两种模式下,是只要有plt出现,图片会立马show出来(所以可以不用显式的plt.show())。这大概也就是很多人也在使用这个工具的缘故吧(我猜的)

但是,这也有一个缺陷:除非将代码一次执行,否则,无法叠加绘图。这个在我看来并不算是缺点。

正是由于现在的你可能不知道它们有啥用。不过不要紧,现在你可以完全忽视上面这两个语句,因为现在使用 Jupyter NoteBook 已经不再需要指定这两种语句了。

2. 两种方式

在网上有些教程文章,画图使用的是 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。

3. 图表的基本元素

前两天的官网上闲逛的时候,发现了一张图,可以说把一个图表该有的元素都很好的展示出来了。从这张图入手,一点一点地实现这里面的每个元素,我们也算是入门了matplotlib了。这里面的大部分元素,我相信会点英文的你都能很轻松的理解。

唯独有这两个概念,我要在这里强调一下,就是 aixs 和 axes 的区别:

:可以认为是两个轴,他可以设置轴的大小限制,set_xlim() ,set_ylim() ,还有设置刻度 ticks(由Locator对象定义),还有ticklabel(由Formatter对象定义)等

:可以认为是axis的复数,是多个axis组成的。在二维图里,就是两个axis组成,在三D图里,就是三个axis组成。所以你可以粗浅的理解为一个图表就是一个axes,他们可以设置 标题:set_title(),标签:set_xlabel(),set_ylabel()等

4. 画个简单的图

学习完了如上的一些基本元素,我们来学习如何一点一点实现它?

以下的代码都在 NoteBook单元格里运行,后面不再赘述。

以上的注释,可以说是很直白啦。一张图表该有的东西都有了,不花哨,但实用。

看看用我们的代码输出的图表是啥样的?

你的第一张图表

-END-

本文的数据可视化第一课,到这里就结束了。觉得有用的,还请点赞转发支持一下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815G08C9B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券