码迷,mamicode.com
首页 > 其他好文 > 详细

Matplotlib中的plt和ax都是啥?

时间:2020-09-11 15:54:00      阅读:36      评论:0      收藏:0      [点我收藏+]

标签:image   一个   教程   -o   设置   cto   ima   show   时间   

Matplotlib中的plt和ax都是啥?

点击上方“Python读财”,选择“星标”公众号
重磅干货,第一时间送达

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])
```!
![](https://s4.51cto.com/images/blog/202008/30/6c11b880b3c8ecf0868a97a35efa68dc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
其实到这里了也会发现,一个Axes对象对应了一个subplot子图,这些个子图都是画在同一个画布Figure之上。
读到这里可能已经对Matplotlib绘图有点感觉了,下一篇系列文章会接着介绍Matplotlib常见组件的设置,有什么疑问可以点下面的的链接给我留言!

Matplotlib中的plt和ax都是啥?

标签:image   一个   教程   -o   设置   cto   ima   show   时间   

原文地址:https://blog.51cto.com/14915204/2525805

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!