小白学 Python 数据分析(16):Matplotlib(一)坐标系

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

小白学 Python 数据分析(16):Matplotlib(一)坐标系

极客挖掘机   2020-03-18 我要评论
![](https://cdn.geekdigging.com/python/spider-blog/Python_logo.jpg) > 人生苦短,我用 Python 前文传送门: [小白学 Python 数据分析(1):数据分析基础](https://www.geekdigging.com/2020/01/19/6719980708/) [小白学 Python 数据分析(2):Pandas (一)概述](https://www.geekdigging.com/2020/01/20/6718497214/) [小白学 Python 数据分析(3):Pandas (二)数据结构 Series](https://www.geekdigging.com/2020/02/04/3234667780/) [小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame](https://www.geekdigging.com/2020/02/05/9920298470/) [小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据](https://www.geekdigging.com/2020/02/16/6852411690/) [小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择](https://www.geekdigging.com/2020/02/20/6566891797/) [小白学 Python 数据分析(7):Pandas (六)数据导入](https://www.geekdigging.com/2020/02/23/7355903936/) [小白学 Python 数据分析(8):Pandas (七)数据预处理](https://www.geekdigging.com/2020/02/25/9013297409/) [小白学 Python 数据分析(9):Pandas (八)数据预处理(2)](https://www.geekdigging.com/2020/02/27/2857868620/) [小白学 Python 数据分析(10):Pandas (九)数据运算](https://www.geekdigging.com/2020/02/29/5808964196/) [小白学 Python 数据分析(11):Pandas (十)数据分组](https://www.geekdigging.com/2020/03/03/5975552137/) [小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)](https://www.geekdigging.com/2020/03/04/8327177610/) [小白学 Python 数据分析(13):Pandas (十二)数据表拼接](https://www.geekdigging.com/2020/03/06/5036602239/) [小白学 Python 数据分析(14):Pandas (十三)数据导出](https://www.geekdigging.com/2020/03/07/6918490736/) [小白学 Python 数据分析(15):数据可视化概述](https://www.geekdigging.com/2020/03/09/7393240956/) ## 引言 各位同学好,本篇文章,我们来介绍下使用 Matplotlib 时如何建立坐标系。 回想一下以前我们在接受九年义务教育毒打上数学课的时候,应该都画过折线图直方图之类的统计图表,其中第一步就是建立直角坐标系。 翻出老课本,帮助各位同学回忆一下当年的数学课,直角坐标系就是下面这个: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/pingmianzuobiao.jpg) 直角坐标系不仅能存在于平面中,还有立体的: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/litizuobiao.jpg) 当然,本文的只介绍平面直角坐标系如何构建,至于立体的,我们后面再聊。 ## 画布 在构建平面直角坐标系之前,我们需要先创建一个画布。 What?画布是啥? emmmmmmmmmmm,这就类似于我们在电脑上画画一样,需要打开画图软件,创建一个空白的白板,这个白板就是我们后续画图的地方。 ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/huabu.jpg) 使用 Matplotlib 创建画布的代码如下,首先需要导入 Matplotlib 的库: ```python import matplotlib.pyplot as plt fig = plt.figure(figsize=(6, 6)) ``` 上面这段代码我们就完成了一个宽和高都为 6 的画布的创建。 ## 创建直角坐标系 创建直角坐标系有多很多种方法,这里我们一种一种来介绍: ### add_subplot 首先,我们使用 `add_subplot` 函数来创建直角坐标系,我们就在刚才创建的那个画布上创建 1 X 1 个直角坐标系: ```python import matplotlib.pyplot as plt fig = plt.figure(figsize=(6, 6)) fig.add_subplot(1,1,1) plt.show() ``` 我们得到的结果如下: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/zhijiaozuobiaoxi_1.png) 我们再创建 2 X 2 个直角坐标系: ```python import matplotlib.pyplot as plt fig = plt.figure(figsize=(6, 6)) ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3) ax4 = fig.add_subplot(2,2,4) plt.show() ``` 结果如下图: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/zhijiaozuobiaoxi_2.png) 这里有一点需要说明一下,这里参数可以省略其中的 `,` 逗号,如下: ```python ax1 = fig.add_subplot(221) ``` 参数的含义为创建 2 X 2 网格第一子图。 ### subplot2grid 在使用 `subplot2grid` 函数创建直角坐标系的时候,不需要事先创建画布,可以直接使用创建,比如我们下面创建一个很简单的折线图和柱状图: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(4) y = np.arange(4) # 绘制折线图 plt.subplot2grid((2,2),(0,0)) plt.plot(x, y) # 绘制柱状图 plt.subplot2grid((2,2),(0,1)) plt.bar(x, y) plt.show() ``` 结果如下: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/zhijiaozuobiaoxi_3.png) ### subplot 同上面的 `subplot2grid` 一样,我们同样可以通过 `subplot` 来绘制直角坐标系,比如我们拿上面的例子再使用 `subplot` 写一遍: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(4) y = np.arange(4) # 绘制折线图 plt.subplot(221) plt.plot(x, y) # 绘制柱状图 plt.subplot(222) plt.bar(x, y) plt.show() ``` 结果还是和上面一样的,小编不再贴了。 上面这个示例的含义是将图标区域分为 2 X 2 共计 4 个区域,在第一个区域上创建折线图,在第二个区域上创建柱状图。 ### subplots `subplots` 看起来和 `subplot` 很像,实际上也是非常像的,它和 `subplot` 的不同之处是 `subplot` 一次只能返回一个坐标系,而 `subplots` 一次可以返回多个坐标系。 我们接着使用 `subplots` 完成前面的示例: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(4) y = np.arange(4) fig, axes = plt.subplots(2, 2) # 绘制折线图 axes[0,0].plot(x,y) # 绘制柱状图 axes[0,1].bar(x,y) plt.show() ``` 结果如下: ![](https://cdn.geekdigging.comhttps://img.qb5200.com/download-x/data_analysishttps://img.qb5200.com/download-x/data_visualization/zhijiaozuobiaoxi_4.png) 可以看到,我们虽然只使用到了两个坐标,但实际上 `subplots` 还是会帮我们将 4 个坐标全都创建出来。 ## 小结 前面介绍的集中直角坐标系的创建方法并无本质上的区别,只有第一种 `add_subplot` 在使用的时候是需要先创建一个画布的,后面三种都是直接调用 Matplotlib 中的函数从而达到直接创建坐标系的方法。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们