脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - matplotlib图形整合之多个子图绘制的实例代码

matplotlib图形整合之多个子图绘制的实例代码

2022-11-28 10:26王小王-123 Python

matplotlib绘制多个子图的时候,我们可以根据自己的想法去排列子图的顺序,也可以生成不同的子图数量,本文就详细的介绍了matplotlib 多子图绘制,具有一定的参考价值,感兴趣的可以了解一下

简单了解多子图

学习matplotlib的时候,有人肯定会觉得为啥不用Excel,为啥不用origin,为啥不直接使用软件,其实matplotlib绘图之所以在python领域经久不衰,是有它的独特之处的,我认为这其中的一个亮点就是,matplotlib绘制多个子图的时候,我们可以根据自己的想法去排列子图的顺序,也可以生成不同的子图数量,类似于前端web可视化大屏,有着较好的用户体验感!

matplotlib图形整合之多个子图绘制的实例代码

 

使用plt.subplot(mnx) 分别绘制

# -*- coding: utf-8 -*-

import matplotlib as mpl
import matplotlib.pyplot as plt

t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
plt.subplot(2,2,1) #要生成两行两列,这是第一个图
plt.plot(t,s,'b*')
plt.ylabel('y1')
plt.subplot(2,2,2) #两行两列,这是第二个图
plt.plot(2*t,s,'r--')
plt.ylabel('y2')
plt.subplot(2,2,3)#两行两列,这是第三个图
plt.plot(3*t,s,'m--')
plt.ylabel('y3')
plt.subplot(2,2,4)#两行两列,这是第四个图
plt.plot(4*t,s,'k*')
plt.ylabel('y4')
plt.show()

matplotlib图形整合之多个子图绘制的实例代码

使用plt.subplot()方法,生成子图,规则总结如下:

第一个数字是行,第二个数字是列,第三个数字是个数(图形所处顺序的序号)

例如:224就是生成两行两列的子图,本图形是第四个,那么就是第二行第二列的图形

那么有时候,有些人觉得这样太麻烦了,每次生成都要在绘图程序前面加一行这样的代码,为什么不可以一次性生成我需要的画布呢?答案是可以的!

使用plt.subplots(m,n),可以一次性生成m行n列的字图

注意前面需要figure和ax进行接收

调用就和我们数组一样!

 

使用plt.subplots(m,n)一次性绘制

# -*- coding: utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt

t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
c=np.cos(t*np.pi)
figure,ax=plt.subplots(2,2) # 多行subplots得到的ax数组是二维的
ax[0][0].plot(t,s,'r*')
ax[0][1].plot(t*2,s,'b--')
ax[1][0].plot(t,c,'g*')
ax[1][1].plot(t*2,c,'y--')

matplotlib图形整合之多个子图绘制的实例代码

# -*- coding: utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
c=np.cos(t*np.pi)
figure,ax=plt.subplots(1,2,figsize=(6,2),dpi=120)  # 一行subplots得到的ax数组是一维的
ax[0].plot(t,s,'r*')
ax[1].plot(t*2,s,'b--')
 plt.subplots(nrows=1,ncols=3,figsize=(5,5))
#plt.subplots(nrows=1,ncols=3)
# 返回一个figure对象,和一个axesSubplot子图对象的数组
# 行或者列等于1,返回一个一维数组

加一个plt.tight_layout()会使得图形更加紧凑

plt.tight_layout()
plt.subplots(nrows=2,ncols=3, figsize=(12,8))  # 如果行列都不为1,那么返回一个2维数组

matplotlib图形整合之多个子图绘制的实例代码

plt.subplots(nrows=3,ncols=4) # 如果行和列都大于1,返回1个Figure对象,和1个包含3*4=12个子图对象的矩阵(2维数组)
# 341      342      343      344
# 345      346      347      348
# 349      3,4,10   3,4,11   3,4,12

matplotlib图形整合之多个子图绘制的实例代码

 

高级进阶

plt.subplot(121)
plt.subplot(222)
plt.subplot(224)

看到上面你会想到什么?会生成怎样的画布呢?

matplotlib图形整合之多个子图绘制的实例代码

下面我就给大家详细的解释一下,为啥会出现这样的画布,首先我的需求是在左边出现一个子图,比较长的,最好是右边两个子图的长度和,那么应该怎么做呢?遇到这样的情况我们仍然需要把这一个平面分成均等分,那么也就是四个。

当我们画一个左边的图的时候,我们应该把画布想象为一行两列的画布,第一个自然也就是121

当我们画右边的图形的时候,我们应该把画布想象为两行两列的画布,右边第一个自然就是222,第二个自然就是224。

下面我们可以多看几个,来验证我们得推论

plt.subplot(221)
plt.subplot(223)
plt.subplot(122)

matplotlib图形整合之多个子图绘制的实例代码

plt.subplot(211)
plt.subplot(223)
plt.subplot(224)

matplotlib图形整合之多个子图绘制的实例代码

plt.subplot(221)
plt.subplot(222)
plt.subplot(212)

matplotlib图形整合之多个子图绘制的实例代码

plt.figure(figsize=(12,5))
plt.subplot(231)
plt.subplot(233)
plt.subplot(234)
plt.subplot(236)
plt.subplot(132)

matplotlib图形整合之多个子图绘制的实例代码

plt.figure(figsize=(16,5))
plt.subplot(262)
plt.subplot(265)
plt.subplot(268)
plt.subplot(2,6,11)
plt.subplot(132)

matplotlib图形整合之多个子图绘制的实例代码

matplotlib图形整合之多个子图绘制的实例代码

注意这个间隙是自动产生的,如果需要将间隙变的更大,那么就可以取最左边的值和最右边的值

plt.figure(figsize=(16,5))
plt.subplot(241)
plt.subplot(244)
plt.subplot(245)
plt.subplot(2,4,8)
plt.subplot(132)

matplotlib图形整合之多个子图绘制的实例代码

 

总结

在生成上面案例的时候,我们需要利用Excel进行编排,不然很容易出错的!

到此这篇关于matplotlib图形整合之多个子图绘制的实例代码的文章就介绍到这了,更多相关matplotlib 多子图绘制内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://wxw-123.blog.csdn.net/article/details/124062039

延伸 · 阅读

精彩推荐
  • Python实用自动化运维Python脚本分享

    实用自动化运维Python脚本分享

    今天小编就为大家分享一篇实用自动化运维Python脚本。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    renfengjun19012021-02-28
  • PythonPython使用自带的ConfigParser模块读写ini配置文件

    Python使用自带的ConfigParser模块读写ini配置文件

    这篇文章主要介绍了Python使用自带的ConfigParser模块读写ini配置文件的方法,ConfigParser中包含了对ini的节section的一些基本操作,使得改写ini时非常简便,需要的朋...

    j_hao1047222020-08-29
  • PythonPython yield与实现方法代码分析

    Python yield与实现方法代码分析

    yield的功能类似于return,但是不同之处在于它返回的是生成器。下面通过本文给大家介绍Python yield与实现方法,需要的朋友参考下...

    脚本之家6372021-01-12
  • PythonPython实现打印彩色字符串的方法详解

    Python实现打印彩色字符串的方法详解

    print 也许是我们在使用 Python 的时候用的最多的一种操作,但是经常发现很多人可以打印彩色文本,这种操作是怎么得到的呢?本文就来为大家详细讲讲...

    和牛8392022-08-10
  • PythonDjango自定义manage命令实例代码

    Django自定义manage命令实例代码

    这篇文章主要介绍了Django自定义manage命令实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    lynne2333882021-01-14
  • PythonPython中的异常类型及处理方式示例详解

    Python中的异常类型及处理方式示例详解

    今天我们主要来了解一下 Python 中的异常类型以及它们的处理方式。说到异常处理,我们首先要知道什么是异常。其实,异常就是一类事件,当它们发生时...

    Data-Mining10882021-12-23
  • PythonPython爬虫+Tkinter制作一个翻译软件的示例

    Python爬虫+Tkinter制作一个翻译软件的示例

    这篇文章主要介绍了Python爬虫+Tkinter制作一个翻译软件的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...

    酸菜鱼编程8422021-09-07
  • Pythonpython查看微信好友是否删除自己

    python查看微信好友是否删除自己

    这篇文章主要为大家详细介绍了python查看微信好友是否删除自己,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    zyf_andy2702020-09-15