• matpyplot简单使用


    Matplotlib图形组成

    Matplotlib 生成的图形主要由以下几个部分构成:

    image-20220224213506515
    • Figure:指整个图形,您可以把它理解成一张画布,它包括了所有的元素,比如标题、轴线等;
    • Axes:绘制 2D 图像的实际区域,也称为轴域区,或者绘图区;
    • Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小(图中轴长为 7)、轴标签(指 x 轴,y轴)和刻度标签;
    • Artist:您在画布上看到的所有元素都属于 Artist 对象,比如文本对象(title、xlabel、ylabel)、Line2D 对象(用于绘制2D图像)等

    Matplotlib.pyplot接口汇总

    Matplotlib figure图形对象

    在 Matplotlib 中,面向对象编程的核心思想是创建图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)。

    备注:可以使用figsize属性指定画布大小,单位英寸

    #创建一个空白画布
    fig = plt.figure()
    # 使用 add_axes() 将 axes 轴域添加到画布中,
    '''
    序列中的 4 个数字分别对应图形的左侧,底部,宽度,和高度,且每个数字必须介于 0 到 1 之间。
    应该是指绘图区距离画布的左侧和底部多远,宽度和高度分别占画布多大
    '''
    ax=fig.add_axes([0,0,1,1])
    
    
    image-20220224225752426

    Matplotlib axes类使用详解

    Matplotlib 定义了一个 axes 类(轴域类),该类的对象被称为 axes 对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布(figure)中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用。

    通过调用图形图像的add_axes()方法可以将 axes 对象添加到画布中。axes 对象在画布中的位置由函数参数rect决定。rect 是位置参数,接受一个由 4 个元素组成的浮点数列表,形如 [left, bottom, width, height] ,它表示添加到画布中的矩形区域的左下角坐标(x, y),以及宽度和高度。

    axes 类的成员函数

    • axes.legend(handles,labels,loc):负责绘制图例。

      • handles 参数是一个序列,它包含了所有线型的实例;

      • labels 是一个字符串序列,用来指定标签的名称;

      • loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示;

        位置 字符串表示 整数数字表示
        自适应 Best 0
        右上方 upper right 1
        左上方 upper left 2
        左下 lower left 3
        右下 lower right 4
        右侧 right 5
        居中靠左 center left 6
        居中靠右 center right 7
        底部居中 lower center 8
        上部居中 upper center 9
        中部 center 10
    • axes.plot():使用方式同plt.plot()

      它可以绘制点和线,语法格式如下:

      # 画单条线
      plot([x], y, [fmt], *, data=None, **kwargs)
      # 画多条线
      plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
      

      参数说明:

      • x,y : 点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
      • fmt : 可选,定义基本格式(如颜色、标记和线条样式)。fmt = '[marker][line][color]'
        • marker:'.' 点标记,'o' 实心圈标记,'s'正方形标记,'D'钻石标记,'H'六角标记,v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记,''无任何标记...等等。
        • line:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线,’'不画线...等等。
        • color:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
      • **kwargs : 可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
        • markersize,简写为 ms:定义标记的大小。
        • markerfacecolor,简写为 mfc:定义标记内部的颜色。
        • markeredgecolor,简写为 mec:定义标记边框的颜色。
        • linewidth ,简写为 lw,定义线的宽度;值可以是浮点数,如:1、2.0、5.67 等。
    • 其他:axes.set_xlabel()/set_ylabel()/set_title()使用方式类似plt.xlabel()/ylabel()/title()

      1. 使用 xlabel()ylabel() 方法来设置 x 轴和 y 轴的标签

      2. 使用 title() 方法来设置标题

      3. 标题与标签的定位

      • title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
      • xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
      • ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: 'bottom', 'top', 和 'center', 默认值为 'center'。
    image-20220225112114868

    Matplotlib subplot()函数用法详解

    感觉配合图形对象使用感觉更方便,更推荐使用下一节介绍的方法

    详细:Matplotlib subplot()函数用法详解 (biancheng.net)

    在使用 Matplotlib 绘图时,我们大多数情况下,需要将一张画布划分为若干个子区域,之后,我们就可以在这些区域上绘制不用的图形。matplotlib.pyplot模块提供了一个 subplot() 函数,它可以均等地划分画布,该函数的参数格式如下:

    plt.subplot(nrows, ncols, index)

    nrows 与 ncols 表示要划分几行几列的子区域(nrows*nclos表示子图数量),index 的初始值为1,用来选定具体的某个子区域。

    配合图形对象:

    使用函数add_subplot(nrows, ncols, index)函数返回一个 axes 对象。

    image-20220225133939704

    要调整子图之间的间距使用函数:

    fig.subplots_adjust(
        left=None,
        bottom=None,
        right=None,
        top=None,
        wspace=None,
        hspace=None,
    )
    

    Matplotlib subplots()函数详解

    matplotlib.pyplot模块提供了一个 subplots() 函数,它的使用方法和 subplot() 函数类似。其不同之处在于,subplots() 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,而 subplot() 只是创建一个包含子图区域的画布。

    subplots 的函数格式如下:

    fig , ax = plt.subplots(nrows, ncols)

    备注:可以设置参数constrained_layout=True自适应子图间距

    nrows 与 ncols 表示两个整数参数,它们指定子图所占的行数、列数。

    函数的返回值是一个元组,包括一个图形对象和一个axes对象数组:[nrows, ncols];可以通过数组索引方式访问axes对象。

    Matplotlib subplot2grid()函数详解

    matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域)。不仅如此,它还可以使用不同数量的行、列来创建跨度不同的绘图区域。与 subplot() 和 subplots() 函数不同,subplot2gird() 函数以非等分的形式对画布进行切分,并按照绘图区域的大小来展示最终绘图结果。

    函数语法格式如下:

    plt.subplot2grid(shape, location, rowspan, colspan)

    参数含义如下:

    • shape:把该参数值规定的网格区域作为绘图区域;
    • location:在给定的位置绘制图形,初始位置 (0,0) 表示第1行第1列;
    • rowsapan/colspan:这两个参数用来设置让子区跨越几行几列。

    Matplotlib grid()设置网格格式

    axes 对象提供的 grid() 方法可以开启或者关闭画布中的网格(即是否显示网格)以及网格的主/次刻度。除此之外,grid() 函数还可以设置网格的颜色、线型以及线宽等属性。

    grid() 的函数使用格式如下:

    grid(color='b', ls = '-.', lw = 0.25)

    参数含义如下:

    • color:表示网格线的颜色;
    • ls:表示网格线的样式;
    • lw:表示网格线的宽度;

    网格在默认状态下是关闭的,通过调用上述函数,网格会被自动开启,如果您只是想开启不带任何样式的网格,可以通过 grid(True) 来实现。

    image-20220225185626992

    坐标轴设置

    1. 设置坐标轴范围

      axes.set_xlim(下限, 上限)

    2. 设置刻度

      1. 方法1

      采用axes.set_xticks(ticks)方法,x轴的刻度就是一维数组ticks。也可以通过 set_xticklabels()函数设置与刻度线相对应的刻度标签。

      image-20220225200244048
      1. 方法2

      见:(38条消息) matplotlib设置坐标轴刻度间隔_单单一个越字的博客-CSDN博客_matplotlib坐标轴刻度间距

    Matplotlib中文乱码解决方案

    import matplotlib.pyplot as plt
    plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
    plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
    

    直方图

    axes.hist(
        x,
        bins=None,
        range=None,
        density=False,
        weights=None,
        cumulative=False,
        bottom=None,
        histtype='bar',
        align='mid',
        orientation='vertical',
        rwidth=None,
        log=False,
        color=None,
        label=None,
        stacked=False,
        *,
        data=None,
        **kwargs,
    )
    

    统计连续型数据的直方图。

    具体使用:matplotlib.pyplot.hist — Matplotlib 3.5.1 documentation

    x : 待统计的数据,(n,) array or sequence of (n,) arrays

    binsint or sequence or str

    • int:将数据划分为指定数量的统计区间,区间长度相等
    • sequence : assuming is [1,2,3,4], then the first bin is [1, 2) (including 1, but excluding 2) and the second [2, 3). The last bin, however, is [3, 4], which includes 4.

    range : tuple or None, default: None

    ​ The lower and upper range of the bins. Lower and upper outliers are ignored. If not provided, range is (x.min(), x.max()). Range has no effect if bins is a sequence.

    ​ If bins is a sequence or range is specified, autoscaling is based on the specified bin range instead of the range of x.

    rwidth : The relative width of the bars as a fraction of the bin width. If None, automatically compute the width.

    image-20220323173724121 image-20220323174222047
  • 相关阅读:
    SQL优化,解决系统运行效率瓶颈
    C#中 哪些是值类型 哪些是引用类型
    C#异常类相关总结
    对象 序列化 字节流 传输
    给数组中的每个元素赋值
    对象转化为 xml字符串
    .NET BETWEEN方法
    Datatable To List<Entity>
    ajax原理
    gulp记录
  • 原文地址:https://www.cnblogs.com/duolaam/p/15937663.html
Copyright © 2020-2023  润新知