Python matplotlib 绘制子图概述

这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

复习回顾

我们在前面对matplotlib模块基本模块的认识,到对matplotlib.plot模块绘制折线图、柱状图饼图等,往期文章的内容快速查看

在统计图表中,能详细地展现数据信息,往往我们都需要绘制多个子图帮助展示数据,pyplot.subplot()、Figure.add_subplot、pyplot.axes()等方法来绘制不同场景的子图

image.png

本期,我们将学习matplotlib绘制子图的方法,Let's go~

1. 子图介绍

我们之前在学习matplotlib模块底层时,都知道matplotlib模块主要分为脚本层、美工层、后端,其中在美工层中,我们对图表组成的元素包括:Figure->Axes->Axis

image.png

  • 怎么才能在图表中放下其他的图表呢?

    这个时候我们需要在Figure画布去添加Axes对象即可创建第二个图表。

  • matplotlib 模块提供绘制方法

    • matplotlib模块提供了方法
    方法 说明
    matplotlib.pyplot.subplot() 将Axes添加到当前画布中
    matplotlib.pyplot.subplots() 创建一个画布和子图
    matplotlib.pyplot.subplot2grid() 利用网格的方式均匀划分不同部分
    matplotlib.pyplot.axes() 将轴添加到当前画布并使其成为当前轴
    matplotlib.pyplot.figure() 创建新画布
    matplotlib.Figure.add_subplot() 向画布添加一个Axes对象作为子图
    matplotlib.Figure.subplots() 向画布中添加一组子图
  • 在matplotlib模块中,支持绘制子图的方法集中在pyplot和Figure类

  • matplotlib 模块中提供的子图的方法我们常用主要subplot()、subplots()和add_subplot()方法

2. 子图属性

在subplot()、subplots()和add_subplot()方法中会共用到如下属性。

  • 设置子图背景色

    • 关键字:facecolor或者fc
    • 取值可选:
      • 表示颜色的英文单词:如红色"red"
      • 表示颜色单词的简称如:红色"r",黄色"y"
      • RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式
  • 设置子图x/y轴标签

    • 设置x轴关键字:xlabel
    • 设置y轴关键字:ylabel
    • 取值形式为:字符串
  • 设置子图x/y轴比例

    • 设置x轴比例关键字:xscale
    • 设置y轴比例关键字:yscale
    • 取值形式可选:{"linear", "log", "symlog", "logit", ...}
  • 设置子图的宽高比:

    • 关键字:box_aspect
    • 取值形式为:浮点型
  • 设置轴位置:

    • 关键字:set_position
    • 取值形式为:列表形式,[left, bottom, width, height] 

3. 绘制子图步骤

  1. 导入matplotlib.pyplot模块和matplotlib.Figure模块
  2. 准备数据,可以使用numpy/pandas整理数据
  3. 调用子图方法创建子图
  4. 调用绘制图形方法折线图plot,pie,bar等

4.小试牛刀

我们使用pyplot.subplot()方法绘制子图

  • 首先,我们使用np.random.randint()生成x,y轴数据
import numpy as np
x = np.random.randint(0,100,25)

y = np.random.randint(0,100,25)
复制代码
  • 结合for循环调用方法pyplot.subplot()方法在画布上创建四个子图对象
import matplotlib.pyplot as plt
for i in range(1,5):
    plt.subplot(2,2,i,fc="#88c999",xlabel="x label",ylabel="y label",title="subplot",aspect="auto")
复制代码
  • 每个子图调用pyplot.bar()方法绘制柱状图
plt.bar(x,y)
复制代码
  • 调用pyplot.tight_layout()方法调整每个子图展示画面
plt.tight_layout()
复制代码
  • 最后绘制子图效果如下

image.png

总结

本次,我们对matplotlib 绘制子图方法和相关属性进行基本学习,关于子图的操作详细操作后续会继续展开。

以上是本期内容,欢迎大佬们点赞评论,下期见~

Guess you like

Origin juejin.im/post/7031897103622373389