Pandas教程写的差不多了,来写一写与数据可视化相关的 Matplotlib
系列教程吧。读过Pandas系列文章的读者应该都知道,我写文章更多的会融入我对这个东西的理解, Matplotlib
系列也是如此。这个系列会涉及 Matplotlib
的一些简单的概念、绘图原理、常见图形的绘制以及一些高阶的绘图技巧。学完之后,期待达到的效果是可以用 Matplotlib
画出这样的图形。
这篇文章先介绍一下 Matplotlib
的一些简单基本概念和绘图原理,直入正题~
不知道有多少同学和我一样,在刚接触 Matplotlib
时,会被书上的 plt
、 ax
以及 subplots
等各种概念所迷惑,心里存在无数个问号,这些究竟是啥?画出来的图不是一样的吗?他们有啥区别?下面就一步步来解答这些迷惑。
概念引入
首先,我们应该要了解一张用 Matplotlib
画出来的图的具体构造,引用一张官方的图:
我们先主要看图里面红色框的 Figure
和蓝色框的 Axes
,如何理解这两个东西呢?
如果将 Matplotlib
绘图和我们平常画画相类比,可以把 Figure
想象成 一张纸 (一般被称之为画布), Axes
代表的则是 纸中的一片区域 (当然可以有多个区域,这是后续要说到的 subplots
),上一张更形象一点的图。
在 Figure
画布中, Axes1
区域画了一张数据仪表盘, Axes2
区域画了柱状图, Axes3
区域绘制了一张地图,相信还是挺好理解的。
两种绘图方式区别
对着两个概念有基本的了解后,就可以来看看 plt.plot()
和 ax.plot()
有何区别了,下面列出了两种用 Matplotlib
绘制图表的方式。
-
plt
# 第一种方式 plt.figure() plt.plot([1,2,3],[4,5,6]) plt.show()
-
ax
# 第二种方式 fig,ax = plt.subplots() ax.plot([1,2,3],[4,5,6]) plt.show()
绘图效果如下
可以看到,不论是用 plt.plot()
还是 ax.plot()
,结果都是一样的
那区别在哪里?
从第一种方式的代码来看,先生成了一个 Figure
画布,然后在这个 画布上隐式生成一个画图区域进行画图 。
第二种方式同时生成了 Figure
和 axes
两个对象,然后用 ax
对象在 其区域内 进行绘图
如果从 面向对象编程 (对理解 Matplotlib
绘图很重要)的角度来看,显然第二种方式更加易于解释,生成的 fig
和 ax
分别对画布 Figure
和绘图区域 Axes
进行控制,第一种方式反而显得不是很直观,如果涉及到子图 零部件的设置 ,用第一种绘图方式会很难受。
在实际绘图时,也更 推荐使用第二种方式。
subplot的绘制
下面通过介绍 subplots
加深对第二种绘图方式的理解
假如现在我要在一张纸上左边画一个折线图,右边画一个散点图,该如何画呢?
首先要有一个画布 Figure
,其次,需要有两个区域 Axes
(等价于两个子图 subplot
)来画图
# 生成画布和axes对象 # nrows=1和ncols=2分别代表1行和2列 fig,ax = plt.subplots(nrows=1,ncols=2)
因为这里有两个画图区域,所以 ax
对应的是一个列表,存储了两个 Axes
对象。
然后分别控制左边和右边的绘图区域进行绘图
fig,ax = plt.subplots(nrows=1,ncols=2) ax[0].plot([1,2,3],[4,5,6]) ax[1].scatter([1,2,3],[4,5,6])
其实到这里了也会发现,一个 Axes
对象对应了一个 subplot
子图,这些个子图都是画在同一个画布 Figure
之上。
读到这里可能已经对 Matplotlib
绘图有点感觉了,下一篇系列文章会接着介绍 Matplotlib
常见组件的设置,有什么疑问可以点下面的的链接给我留言!
往期文章
你点的每个“在看”,是对我最大的鼓励
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms for Image Processing and Computer Vision
Parker, J. R. / 2010-12 / 687.00元
A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!