matplotlib之pyplot模块实现添加子图subplot的使用

概述

subplot()函数向当前图像(figure)添加一个子图(Axes),并将该子图设为当前子图。或者将某子图设为当前子图。

pyplot.subplot()其实是Figure.add_subplot()的一个封装。

函数的定义签名为:matplotlib.pyplot.subplot(*args, **kwargs)

函数的调用签名为:

  • subplot(nrows, ncols, index, **kwargs)
  • subplot(pos, **kwargs)
  • subplot(**kwargs)
  • subplot(ax)

函数的参数为:

*args:定义子图的位置。int(int, int, index)SubplotSpec, 默认值为(1, 1, 1)

*args由以下三种定义方式。

  • 三个整数构成的三元组(nrows, ncols, index):首先构成一个nrows行和ncols列的网格,然后将子图添加到对应index索引位置。 index从1开始累计,1为左上角,依次向右递增. index也可以是是一个二元组,例如fig.add_subplot(3, 1, (1, 2))。
  • 三位整数:每一位数字可以分解为单独的整数,因此,这种方法最好用于子图少于9个的情况(index最大只能为9)。比如plt.subplot(235)等价于plt.subplot(2, 3, 5)。
  • SubplotSpec对象:

函数的返回值为:axes.SubplotBase对象或 Axes的其他子类。

案例:规则布局

import matplotlib.pyplot as plt

# 添加3行3列子图中的第1个子图,并将其为当前子图
plt.subplot(331)
plt.bar(range(1,4),range(1,4))
# 添加3行3列子图中的第5个子图,并将其为当前子图
plt.subplot(335)
plt.pie([4,5,6])
# 添加3行3列子图中的第9个子图,并将其为当前子图
# 返回值为Axes对象
ax=plt.subplot(339)
# 使用Axes的方法(面向对象模式)绘制点
ax.plot([1],'o')

plt.show()

pyplot.plot()源码如下,通过源码可知pyplot模块的函数底层调用的是Axes对象的对应方法。

def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
    return gca().plot(
        *args, scalex=scalex, scaley=scaley,
        **({"data": data} if data is not None else {}), **kwargs)

不规则布局

通常子区函数subplot()用来完成等分画布的绘图展示的任务,如果在画布上需要进行非等分画布的图形展示时,我们可以多次调用函数subplot()来完成非等分画布的绘图准备任务。

import matplotlib.pyplot as plt

# 绘制1行2列子图中的第1个子图
plt.subplot(121,facecolor='r')
# 绘制2行2列子图中的第2个子图
plt.subplot(222,facecolor='g')
# 绘制2行2列子图中的第4个子图
plt.subplot(224,facecolor='b')

plt.show()

import matplotlib.pyplot as plt

# 绘制3行2列子图中的第1个子图
plt.subplot(321,facecolor='r')
# 绘制3行2列子图中的第2个子图
plt.subplot(322,facecolor='r')
# 绘制3行2列子图中的第3个子图
plt.subplot(323,facecolor='r')
# 绘制3行2列子图中的第4个子图
plt.subplot(324,facecolor='r')
# # 绘制3行1列子图中的第3个子图
plt.subplot(313,facecolor='b')

plt.show()

subplot()函数有一个非常重要的特性:
在创建新的子图时,如果新建子图与原有的子图存在重叠的情况,那么会删除原有重叠的子图。
例如:

import matplotlib.pyplot as plt
# 绘图时隐含创建subplot(111)
plt.plot([1, 2, 3])
# 创建一个新的子图,由于与原子图重叠,因此删除原有子图
plt.subplot(211)
plt.show()

到此这篇关于matplotlib之pyplot模块实现添加子图subplot的使用的文章就介绍到这了,更多相关matplotlib 添加子图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • matplotlib subplot绘制多个子图的方法示例

    在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下: subplot(numRows, numCols, plotNum) 图表的整个绘图区域被分成numRows行和numCols列,plotNum参数指定创建的Axes对象所在的区域,如何理解呢? 如果numRows = 3,numCols = 2,那整个绘制图表样式为3X2的图片区域,用坐标表示为(1,1),(1,2),(1,3),(2,1),(2,2),(2,3).

  • python使用matplotlib:subplot绘制多个子图的示例

    数据可视化的时候,常常需要将多个子图放在同一个画板上进行比较,python 的matplotlib包下的subplot可以帮助完成子功能. part1 绘制如下子图 import matplotlib.pyplot as plt plt.figure(figsize=(6,6), dpi=80) plt.figure(1) ax1 = plt.subplot(221) plt.plot([1,2,3,4],[4,5,7,8], color="r",linestyle = "-

  • matplotlib subplots 调整子图间矩的实例

    在matplotlib中,用subplots画子图时,有时候需要调整子图间矩,包括子图与边框的间矩,子图间上下间矩,子图间左右间矩,可以使用fig.tight_layout()函数: Help on method tight_layout in module matplotlib.figure: tight_layout(renderer=None, pad=1.08, h_pad=None, w_pad=None, rect=None) method of matplotlib.figure.

  • 完美解决matplotlib子图坐标轴重叠问题

    绘制matplotlib多个图形于一张图时往往会出现相邻图坐标轴重叠的现象 此时只须在汇完所有子图后加上以下代码即可 plt.tight_layout() 补充:解决matplotlib横坐标日期过长导致的重叠.无法完全显示问题(换行) 该方法较为繁杂,主要是将年月日和时间分开,通过使用plt.text根据坐标位置将年月日重新加上,前面是为了进行时间转化, 有用的代码为 > plt.text(zb[link],-1.2,year,ha='center')#需要根据自己的位置调整Y的坐标即调整-1

  • matplotlib绘制多个子图(subplot)的方法

    在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下: subplot(numRows, numCols, plotNum) 图表的整个绘图区域被分成numRows行和numCols列,plotNum参数指定创建的Axes对象所在的区域,如何理解呢? 如果numRows = 3,numCols = 2,那整个绘制图表样式为3X2的图片区域,用坐标表示为(1,1),(1,2),(1,3),(2,1),(2,2),(2,3).

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]] data

  • Python数据分析matplotlib设置多个子图的间距方法

    注意,要看懂这里,必须具备简单的Python数据分析知识,必须知道matplotlib的简单使用! 例1: plt.subplot(221) # 第一行的左图 plt.subplot(222) # 第一行的右图 plt.subplot(212) # 第二整行 plt.title('xxx') plt.tight_layout() #设置默认的间距 例2: for i in range(25): plt.subplot(5,5,i+1) plt.tight_layout() 例3: # 设定画图板

  • matplotlib 画双轴子图无法显示x轴的解决方法

    主要问题 1.介绍 如题,画双轴子图不能显示 x-轴坐标轴标签,似乎 "双轴"与"子图"存在冲突有关,当前版本是 anaconda 3.7.4.比较奇葩的是 我家里的电脑,3.7.3 却没这个问题.但我把公司电脑换成 3.7.3 问题依旧,崩溃. import pandas as pd import matplotlib.pyplot as plt a = pd.date_range('2020-07-01','2020-07-20') b = [2,3,4,5,7

  • matplotlib之pyplot模块实现添加子图subplot的使用

    概述 subplot()函数向当前图像(figure)添加一个子图(Axes),并将该子图设为当前子图.或者将某子图设为当前子图. pyplot.subplot()其实是Figure.add_subplot()的一个封装. 函数的定义签名为:matplotlib.pyplot.subplot(*args, **kwargs) 函数的调用签名为: subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(**kwar

  • matplotlib之pyplot模块添加文本、注解(text和annotate)

    目录 概述 text函数概述 annotate函数概述 text函数和annotate函数的对比 总结 概述 text函数作用是根据x,y坐标向图像添加文本. annotate函数作用是根据x,y坐标向图像添加文本注解. 两者非常相似,但是又有一定差别. text函数概述 text函数的签名为:matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs) 参数说明如下: x,y:放置文本的坐标.浮点数.必备参数. s:文本.字符串.必备参数.

  • matplotlib之pyplot模块之标题(title()和suptitle())

    matplotlib 源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)添加链接描述简单比较了matplotlib中的标题. 使用title()设置子图标题 title()可同时在子图中显示中间.左侧.右侧3个标题. 函数签名为matplotlib.pyplot.title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs) 参数作用及取值如下: label:类型为字符串,即标题文本. fontdict:类型为字典

  • 使用matplotlib的pyplot模块绘图的实现示例

    1. 绘制简单图形 使用 matplotlib 的pyplot模块绘制图形.看一个 绘制sin函数曲线的例子. import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到 6 的数据* y = np.sin(x) # 绘制图形 plt.plot(x,y) plt.show() 这里使用NumPy的arange()方法生成了[0, 0.1, 0.2, - , 5.

  • matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())

    在pyplot模块中可以使用xlabel()和ylabel()函数设置x轴y轴的标签.这两个函数的使用方法非常相似. 使用xlabel()设置x轴标签 函数签名为matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs) 参数作用及取值如下: xlabel:类型为字符串,即标签的文本. labelpad:类型为浮点数,默认值为None,即标签与坐标轴的距离. loc:取值范围为{'le

  • matplotlib之pyplot模块坐标轴范围设置(autoscale(),xlim(),ylim())

    matplotlib默认根据数据系列自动缩放坐标轴范围.pyplot模块中的autoscale函数可以切换是否自动缩放坐标轴范围,xlim()和ylim()函数可手动设置坐标轴范围. autoscale函数 对于pyplot模块控制坐标轴范围是否自动缩放的函数为autoscale. 函数签名为matplotlib.pyplot.autoscale(enable=True, axis='both', tight=None) 参数作用及取值如下: enable为布尔值,即是否自动缩放. axis取值

  • 基于Matplotlib 调用 pyplot 模块中 figure() 函数处理 figure图形对象

    在 Matplotlib 中,面向对象编程的核心思想是创建图形对象(figure object).通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布.在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域). Matplotlib 提供了matplotlib.figure图形类模块,它包含了创建图形对象的方法.通过调用 pyplot 模块中 figure() 函数来实例化 figure 对象. 如下所示: from matplot

  • matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    目录 一.摘要 二.代码 三.部分代码解释 1. colormap(颜色)映射设置. 2. 设置三维散点格式 3. 设置侧边colorbar 四.参考 总结 一.摘要 在进行数据可视化时,对于一元函数f(x)=y数据我们可以使用二维平面图显示,x轴表示自变量,y轴表示函数值:对于二元函数f(x,y)=z数据我们也可以使用三维图可视化,x和y轴表示自变量,z轴表示函数值.由于显示设备的局限性,对于三元函数f(x,y,z)=v数据无法通过增加坐标轴的方式可视化,一个可行的方法是使用x.y和z轴表示自

  • Python matplotlib读取excel数据并用for循环画多个子图subplot操作

    读取excel数据需要用到xlrd模块,在命令行运行下面命令进行安装 pip install xlrd 表格内容大致如下,有若干sheet,每个sheet记录了同一所学校的所有学生成绩,分为语文.数学.英语.综合.总分 考号 姓名 班级 学校 语文 数学 英语 综合 总分 ... ... ... ... 136 136 100 57 429 ... ... ... ... 128 106 70 54 358 ... ... ... ... 110.5 62 92 44 308.5 画多张子图需要

  • Python Matplotlib数据可视化模块使用详解

    目录 前言 1 matplotlib 开发环境搭建 2 绘制基础 2.1 绘制直线 2.2 绘制折线 2.3 设置标签文字和线条粗细 2.4 绘制一元二次方程的曲线 y=x^2 2.5 绘制正弦曲线和余弦曲线 3 绘制散点图 4 绘制柱状图 5 绘制饼状图 6 绘制直方图 7 绘制等高线图 8 绘制三维图 总结 本文主要介绍python 数据可视化模块 Matplotlib,并试图对其进行一个详尽的介绍. 通过阅读本文,你可以: 了解什么是 Matplotlib 掌握如何用 Matplotlib

随机推荐