精华内容
下载资源
问答
  • import matplotlib.gridspec as gridspec # 用网格来创建子图 import matplotlib.pyplot as plt fig = plt.figure(figsize=(4, 6)) # 创建画布 grid = gridspec.GridSpec(2, 3) # 设定2行*3列的网格 ax1 = fig.add...

    不设置子图时,默认Figure只有一个Axies,设置子图就是在一个Figure里包含多个Axes,示例如下:
    在这里插入图片描述

    示例代码

    import matplotlib.gridspec as gridspec  # 用网格来创建子图
    import matplotlib.pyplot as plt
    
    fig = plt.figure(figsize=(4, 6))  # 创建画布
    grid = gridspec.GridSpec(2, 3)  # 设定2行*3列的网格
    
    ax1 = fig.add_subplot(grid[0, :])  # 第一行的全部列都添加到ax1中
    ax1.plot([1, 2, 3], [1, 2, 3])  # 在ax1中绘图与操作,这都是这个ax的操作,不会影响全局
    
    ax2 = fig.add_subplot(grid[1, 0])  # 第二行,第1列
    ax2.plot([1, 2, 3], [1, 2, 3])
    
    ax3 = fig.add_subplot(grid[1, 2])  # 第二行,第3列
    ax3.plot([1, 2, 3], [1, 2, 3])
    
    fig.tight_layout()  # 全局整理图片尺寸
    plt.savefig("pic.png") # 保存
    plt.show()
    

    效果图如下:

    在这里插入图片描述

    展开全文
  • matplotlib绘制子图 subplot

    千次阅读 2019-09-06 15:38:15
    1.绘制子图 使用subplot() 方法,subplot()方法传入numrows,numcols,fignum参数:fignum范围是 1 到numrows*numcols import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.0, 5.0, 50) y1 = np.sin...

    1.绘制子图

    使用subplot() 方法,subplot()方法传入numrows,numcols,fignum参数:fignum范围是 1 到numrows*numcols

    import matplotlib.pyplot as plt
    import numpy as np
    
    x=np.linspace(0.0, 5.0, 50)
    y1 = np.sin(x)
    y2 = np.exp(x) * np.cos(x)
    
    figures = plt.figure(1)
    axeses = [plt.subplot(221), plt.subplot(224)]
    
    plt.subplot(221)
    lines=plt.plot(x, y1, x, y2)
    plt.subplot(224)
    plt.plot(x)
    
    plt.setp(figures, facecolor='c')
    plt.setp(lines, linestyle='dashdot')
    
    plt.show()
    

    另外,绘制的子图也可以不在矩形网格上, 使用axes()命令, 可以在指定位置为axes([left,bottom,width,height])绘图,其中所有参数值都为小数(0 to 1) 坐标,即是与原图的比值。

    import matplotlib.pyplot as plt
    import numpy as np
    # 创建数据
    
    t = np.arange(0.0, 10.0, 0.01)
    r = np.exp(-t[:1000]/0.05) # impulse response
    x = np.random.randn(len(t))
    s = np.convolve(x, r)[:len(x)]*dt # colored noise
    
    # 默认主轴图axes是subplot(111)
    plt.plot(t, s)
    plt.axis([0, 1, 1.1*np.amin(s), 2*np.amax(s)])
    
    #内嵌图
    a = plt.axes([.65, .6, .2, .2], facecolor='y')
    n, bins, patches = plt.hist(s, 400, normed=1)
    plt.title('Probability')
    plt.xticks([])
    plt.yticks([])
    
    #另外一个内嵌图
    a = plt.axes([0.2, 0.6, .2, .2], facecolor='y')
    plt.plot(t[:len(r)], r)
    plt.title('Impulse response')
    plt.xlim(0, 0.2)
    plt.xticks([])
    plt.yticks([])
    
    plt.show()
    

    2.绘制子图详解

    MATLAB和pyplot, 都具有当前图框和当前子图的概念。此前所有绘图命令均适用于当前子图。 函数gca()"get current axes"返回当前子图(一个matplotlib.axes.Axes实例), 而gcf()"get current figure"返回当前图框(一个matplotlib.figure.Figure实例).

    3.通过GridSpec来定制Subplot布局

    GridSpec指定子图所放置的几何网格。

    3.1 subplotgrid 示例

    subplot2grid类似于“pyplot.subplot”,但是它从0开始索引。以下两句效果相同。

    ax = plt.subplot2grid((2,2),(0, 0))
    ax = plt.subplot(2,2,1)
    

    subplot2grid 创建跨多个单元格的子图

    ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)
    ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)
    ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)
    ax4 = plt.subplot2grid((3,3), (2, 0))
    ax5 = plt.subplot2grid((3,3), (2, 1))
    

    3.2 使用GridSpec 和 SubplotSpec

    可以显式创建GridSpec并使用它们来创建子图

    ax = plt.subplot2grid((2,2),(0, 0))
    

    相当于

    import matplotlib.gridspec as gridspec
    gs = gridspec.GridSpec(2, 2)
    ax = plt.subplot(gs[0, 0])
    

    gridspec提供类似数组的索引来返回SubplotSpec实例,所以也可以使用切片(slice)来合并单元格。

    gs = gridspec.GridSpec(3, 3)
    ax1 = plt.subplot(gs[0, :])
    ax2 = plt.subplot(gs[1,:-1])
    ax3 = plt.subplot(gs[1:, -1])
    ax4 = plt.subplot(gs[-1,0])
    ax5 = plt.subplot(gs[-1,-2])
    

    3.3 调整GridSpec布局

    当一个 GridSpec 实例显示使用,可以调整从gridspec创建的子图的布局参数。

    gs1 = gridspec.GridSpec(3, 3)
    gs1.update(left=0.05, right=0.48, wspace=0.05)
    

    这类似于tosubplots_adjust(之前的子图列表参数设置),但它只影响从给定GridSpec创建的子图。举例:

    gs1 = gridspec.GridSpec(3, 3)
    gs1.update(left=0.05, right=0.48, wspace=0.05)
    ax1 = plt.subplot(gs1[:-1, :])
    ax2 = plt.subplot(gs1[-1, :-1])
    ax3 = plt.subplot(gs1[-1, -1])
    
    gs2 = gridspec.GridSpec(3, 3)
    gs2.update(left=0.55, right=0.98, hspace=0.05)
    ax4 = plt.subplot(gs2[:, :-1])
    ax5 = plt.subplot(gs2[:-1, -1])
    ax6 = plt.subplot(gs2[-1, -1])
    

    参考

    matplotlib中文手册

    展开全文
  • 当我们要绘制含有多个子图的画布时,很可能遇见需要调整坐标轴的下标排列、范围、是否透明等情况 plt.subplot(121) plt.subplot(122) plt.show() 上图为画两个子图时默认坐标轴 要对坐标轴进行调整,首先得...

    当我们要绘制含有多个子图的画布时,很可能遇见需要调整坐标轴的下标排列、范围、是否透明等情况

    plt.subplot(121)
    plt.subplot(122)
    plt.show()

    上图为画两个子图时默认坐标轴

    要对坐标轴进行调整,首先得清楚原理:

    在matplotlib的pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。

    其中,plt.gca()表示Get Current Axes。

    由上,我们就牵扯到了matplotlib的两种基本作图法:用axes绘图或是用pyplot(即plt)绘图。两种方法都可以做到将作图权牢牢的把握在自己手中,区别是axes绘图对流程描述更清晰,pyplot则更方便。

    先讲述axes绘图方法来奠定绘图流程的基础。

    plt.subplot(121)
    ax1 = plt.gca()
    ax1.set_xlim([0,255])#重点是对获取到的axes对象进行操作
    ax1.xaxis.set_ticks([0,155,225])
    plt.show()

    其实也可以利用subplot函数返回的一个对象来操作绘图,即

    ax1 = plt.subplot(121)
    ax1.set_xlim([0,255])
    ax1.xaxis.set_ticks([0,155,225])
    plt.show()

    效果一样

    以下为纯用plt默认绘图

    plt.subplot(121)
    plt.xlim([0,255])
    plt.xticks([0,39,190])
    plt.show()

    用plt进行参数调整时,会默认在最后一个建立的坐标轴上绘图,所以如果建图过程自己很清楚,那么其实这种方法更快更简便。

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 使用matplotlib绘图时通常会绘制子图用于清晰展示,我们通过subplot来绘制子图位置即可。 subplot通常用来定位的参数有三个(行数,列数,子图索引),三个参数用‘,’隔开,也可简化不写“,” 实例代码例如: import ...

    一、 subplot绘制子图

    使用matplotlib绘图时通常会绘制子图用于清晰展示,我们通过subplot来绘制子图位置即可。
    subplot通常用来定位的参数有三个(行数,列数,子图索引),三个参数用‘,’隔开,也可简化不写“,” 实例代码例如:

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    def f(x):
        '''定义要绘制的函数'''
        return x**2
    
    
    plt.figure(figsize=(10,10))#设置画布大小
    x= np.linspace(0,2)
    # 将画布分成2x1的布局,占用第1个(即第2行第1列的子图)
    plt.subplot(211)
    plt.plot(x,f(x))
    plt.title("第一幅子图")
    # 将画布分成2x3的布局,占用第4个(即第2行第1列的子图)
    plt.subplot(234)
    plt.plot(x,f(x))
    plt.title("第二幅子图")
    # 将画布分成2x3的布局,占用第5个(即第2行第2列的子图)
    plt.subplot(235)
    plt.plot(x,f(x))
    plt.title("第三幅子图")
    

    在这里插入图片描述
    但是这种方法有个缺点,比如我想把上述的第三幅子图占据后面的两个子图的位置,用subplot的三个参数是无法做到的,那么这时我们就需要子图的网格布局

    二、自定义网格布局subplot2grid

    2.1参数说明

    subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)
    

    shape:网格的尺寸
    loc:绘制子图位置
    rowspan:轴向下跨距的列数。
    colspan:轴向右跨距的行数。

    2.2示例

    为了实现让第三幅子图占两行,我们使用subplot2grid进行网格布局,

    plt.figure(figsize=(12,8))
    
    #在2行3列的表格中,第一行第一列的位置绘制一个轴向右跨距为3的子图
    plt.subplot2grid((2,3) ,(0, 0), colspan=3)
    plt.title("第一幅子图")
    plt.plot(x,f(x))
    
    #在2行3列的表格中,第2行第1列的位置绘制一个子图
    plt.subplot2grid((2,3), (1, 0))
    plt.title("第二幅子图")
    plt.plot(x,f(x))
    
    plt.subplot2grid((2,3) ,(1, 1), colspan=2)
    plt.title("第三幅子图")
    plt.plot(x,f(x))
    

    在这里插入图片描述

    更多布局:

    fig = plt.figure(figsize=(15,15))
    ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
    ax1.set_title("第一幅子图")
    ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
    ax2.set_title("第二幅子图")
    ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
    ax3.set_title("第三幅子图")
    ax4 = plt.subplot2grid((3, 3), (2, 0))
    ax4.set_title("第四幅子图")
    ax5 = plt.subplot2grid((3, 3), (2, 1))
    ax5.set_title("第五幅子图")
    plt.show()
    

    在这里插入图片描述

    展开全文
  • def show_img_bright(rgb,hsv,mask,masked):fig,(ax1,ax2,ax3,ax4) = plt.subplots(1,4,figsize=(10,10))ax1.imshow(rgb)ax2.imshow(hsv[:,:,2],cmap='gray')ax3.imshow(mask,cmap='gray')ax4.imshow(masked[:,:,2],...
  • 本文主要使用matplotlib进行多图的绘制。 %matplotlib notebook import matplotlib from matplotlib import pyplot as plt plt.ion() %matplotlib tk from matplotlib import rcdefaults rcdefaults() import numpy ...
  • matplotlib绘制子图

    2021-06-04 17:58:44
    绘制子图 子图可以在一个窗口中显示多张图表. 矩阵式布局   矩阵式布局相关API:mp.figure()创建一个窗口,然后mp.subplot(m,n,p)设置子图的数量。m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是...
  • matplotlib实现子图绘制 # 显示多幅图的两种方法 import matplotlib.pyplot as plt plt.figure(figsize=(10,8),dpi=100) plt.subplot(221),plt.imshow(img1,cmap=plt.cm.gray),plt.title('原图') plt.xticks([]),...
  • matplotlib子图添加图例的方法

    千次阅读 2021-04-29 11:31:19
    matplotlib子图添加图例的方法代码如下:import matplotlib.pyplot as pltx = [1,2,3,4,5,6,7,8]y = [5,2,4,2,1,4,5,2]axe1 = plt.subplot(211)s1 = axe1.scatter(x,y, color='r', s=25, marker="o")plt.legend(...
  • Matplotlib-绘制子图

    2021-03-05 19:30:09
    9.Matplotlib-绘制子图image扫码关注【牵引小哥讲Python】,关注回复【资源】领取学习资源!原创作者:牵引小哥微信公众号:牵引小哥讲Python注:转载或复制请注明出处——牵引小哥Matplotlib是一个面向对象的绘图库...
  • import matplotlib.pyplot as plt ...1. 使用plt.subplots绘制均匀状态下的子图 返回元素分别是画布和子图构成的列表,第一个数字为行,第二个为列 figsize参数可以指定整个画布的大小 share...
  • matplotlib绘制子图(圆,三角函数)

    千次阅读 2019-05-20 17:10:52
    (1) plot1.add_subplot(2,2,1)参数2,2,1表示子图共两行两列,1表示现在绘制第一个子图 (2)下面两句顺序不能颠倒 plt.plot(x,y,color='pink',marker='*') plt.legend(["圆"]) import numpy as np import ...
  • Matplotlib绘制子图

    2014-04-23 17:13:00
    Matplotlib绘制子图需要subplot函数,该函数的定义如下: 基本的使用方法如下 import numpy as np import matplotlib.pyplot as plt plt.subplot( 3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,358
精华内容 3,343
关键字:

matplotlib绘制子图