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

人生苦短,我用 Python
前文传送门:
小白学 Python 数据分析(2):Pandas (一)概述
小白学 Python 数据分析(3):Pandas (二)数据结构 Series
小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame
小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据
小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
小白学 Python 数据分析(7):Pandas (六)数据导入
小白学 Python 数据分析(8):Pandas (七)数据预处理
小白学 Python 数据分析(9):Pandas (八)数据预处理(2)
小白学 Python 数据分析(10):Pandas (九)数据运算
小白学 Python 数据分析(11):Pandas (十)数据分组
小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)
小白学 Python 数据分析(13):Pandas (十二)数据表拼接
小白学 Python 数据分析(14):Pandas (十三)数据导出
引言
各位同学好,本篇文章,我们来介绍下使用 Matplotlib 时如何建立坐标系。
回想一下以前我们在接受九年义务教育毒打上数学课的时候,应该都画过折线图直方图之类的统计图表,其中第一步就是建立直角坐标系。
翻出老课本,帮助各位同学回忆一下当年的数学课,直角坐标系就是下面这个:

直角坐标系不仅能存在于平面中,还有立体的:

当然,本文的只介绍平面直角坐标系如何构建,至于立体的,我们后面再聊。
画布
在构建平面直角坐标系之前,我们需要先创建一个画布。
What?画布是啥?
emmmmmmmmmmm,这就类似于我们在电脑上画画一样,需要打开画图软件,创建一个空白的白板,这个白板就是我们后续画图的地方。

使用 Matplotlib 创建画布的代码如下,首先需要导入 Matplotlib 的库:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6, 6))
上面这段代码我们就完成了一个宽和高都为 6 的画布的创建。
创建直角坐标系
创建直角坐标系有多很多种方法,这里我们一种一种来介绍:
add_subplot
首先,我们使用 add_subplot 函数来创建直角坐标系,我们就在刚才创建的那个画布上创建 1 X 1 个直角坐标系:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6, 6))
fig.add_subplot(1,1,1)
plt.show()
我们得到的结果如下:

我们再创建 2 X 2 个直角坐标系:
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()
结果如下图:

这里有一点需要说明一下,这里参数可以省略其中的 , 逗号,如下:
ax1 = fig.add_subplot(221)
参数的含义为创建 2 X 2 网格第一子图。
subplot2grid
在使用 subplot2grid 函数创建直角坐标系的时候,不需要事先创建画布,可以直接使用创建,比如我们下面创建一个很简单的折线图和柱状图:
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()
结果如下:

subplot
同上面的 subplot2grid 一样,我们同样可以通过 subplot 来绘制直角坐标系,比如我们拿上面的例子再使用 subplot 写一遍:
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 完成前面的示例:
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()
结果如下:

可以看到,我们虽然只使用到了两个坐标,但实际上 subplots 还是会帮我们将 4 个坐标全都创建出来。
小结
前面介绍的集中直角坐标系的创建方法并无本质上的区别,只有第一种 add_subplot 在使用的时候是需要先创建一个画布的,后面三种都是直接调用 Matplotlib 中的函数从而达到直接创建坐标系的方法。
小白学 Python 数据分析(16):Matplotlib(一)坐标系的更多相关文章
- 小白学 Python 数据分析(17):Matplotlib(二)基础操作
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(18):Matplotlib(三)常用图表(上)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(19):Matplotlib(四)常用图表(下)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(20):pyecharts 概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(2):Pandas (一)概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 概览 首先还是几个官方链接放一下: Pandas 官网:https://pandas.pydata.or ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(15):数据可视化概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
随机推荐
- iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码
iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件 iOS高仿微信完整项目源码 想要更简单的推送消息,看本文就对了 ScrollView嵌套ScrolloView解决方 ...
- OpenCV 腐蚀膨胀操作
利用腐蚀膨胀操作实现对椭圆周围线条的消除,椭圆的大小不变 代码如下: #include "cv.h" #include "highgui.h" int main ...
- 在Docker内安装jenkins运行和基础配置
这里是在linux环境下安装docker之后,在doucer内安装jenkins --------------------docker 安装 jenkins---------------------- ...
- fastDFS 一二事 - 简易服务器搭建之--阿里云
第一步:安装fastDFS依赖libevent工具包 yum -y install libevent 第二步:解压libfastcommon-1.0.7.tar.gz文件 tar -zvxf libf ...
- process.env
官方: process.env属性返回一个包含用户环境信息的对象.
- 2020 将至,Tester 你过得还好么?
"昏天黑地地执行用例.跟踪 bug.与开发和产品争吵.工作被压在产品发布的最后阶段,因而要背负整个团队的压力,在 retro meeting 时承受着疯狂 diss......" ...
- windows应用程序单实例
前言 这才第几天博客就跟不上了,看来一天一篇博客的目标还是有点大,写博客还是挺费时间的,写了不满意删,删完再写...直到自己没了耐心.今天先写个前言,实质性的内容明天再补吧.今天一天的收获还是挺多的, ...
- kafka&&kafka-manager部署安装
一.zk集群部署 二.kafka部署安装 1.创建kafka用户和日志路径,(直接执行) groupadd kafka useradd -g kafka kafka mkdir -p /web/kaf ...
- api安全规范
1. API签名的目的 校验API调用者的身份,是否有权访问 校验请求的数据完整性,防止被中间人篡改 防止重放攻击 2.基本概念 AccessKey: API使用者向API提供方申请的Ac ...
- Centos 7 安装Mysql8 主从同步复制
环境:Centos 7 软件:Mysql8 安装方式:Yum 1.从官网下载最新yum 源对应Cenots 7 版本安装: [root@DataNode-03 ~]# yum -y localinst ...